[#142] Gallery screen: add clear filter button
add test for 'clear filter' button presence and link load requirements-dev.txt in pylint container use lxml instead of django-with-assert
This commit is contained in:
parent
7ee0fe0b00
commit
6eeeee1f7b
|
@ -13,6 +13,7 @@ pylint:
|
|||
stage: test
|
||||
before_script:
|
||||
- pip3 install -r requirements.txt
|
||||
- pip3 install -r requirements-dev.txt
|
||||
|
||||
script:
|
||||
- ./tests/test-pylint.sh
|
||||
|
|
|
@ -40,11 +40,11 @@
|
|||
}
|
||||
|
||||
.rm-app-add {
|
||||
@extend .mdl-grid, .rm-grid--full-width, .rm-grid--center;
|
||||
@extend .mdl-grid, .rm-grid--center;
|
||||
}
|
||||
|
||||
.rm-app-add-filters {
|
||||
@extend .mdl-cell, .mdl-cell--8-col;
|
||||
@extend .mdl-cell, .mdl-cell--10-col;
|
||||
}
|
||||
|
||||
.rm-app-add-filters-search {
|
||||
|
@ -76,19 +76,19 @@
|
|||
}
|
||||
|
||||
.rm-app-add-filters-second-row {
|
||||
@extend .mdl-grid, .rm-grid--full-width, .rm-grid--center;
|
||||
@extend .mdl-grid, .rm-grid--full-width;
|
||||
}
|
||||
|
||||
.rm-app-add-filters-category-container,
|
||||
.rm-app-add-filters-source-container {
|
||||
@extend .mdl-cell, .mdl-cell--6-col, .center;
|
||||
.rm-app-add-filters-source-container,
|
||||
.rm-app-clear-filters-container {
|
||||
@extend .mdl-cell, .mdl-cell--4-col;
|
||||
}
|
||||
|
||||
.rm-app-add-filters-category,
|
||||
.rm-app-add-filters-source {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.rm-app-add-filters-category-title,
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
<div class="rm-app-add">
|
||||
<div class="rm-app-add-filters">
|
||||
<!-- TODO: Show with JS "in Multimedia and GuardianProject Official Releases" -->
|
||||
<!-- TODO: Add ability to clear all filters -->
|
||||
<form action="" method="get">
|
||||
<div class="rm-app-add-filters-search mdl-js-textfield">
|
||||
<i class="material-icons">search</i>
|
||||
|
@ -161,6 +160,18 @@
|
|||
{% endfor %}
|
||||
</noscript>
|
||||
</div>
|
||||
{% if category or remote_repo %}
|
||||
<div class="rm-app-clear-filters-container">
|
||||
<div class="rm-app-clear-filters">
|
||||
<a
|
||||
href="{% url 'add_app' repo.id %}"
|
||||
class="mdl-button mdl-js-button mdl-js-ripple-effect"
|
||||
>
|
||||
{% trans 'Clear filters' %}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from unittest.mock import patch
|
||||
|
||||
import lxml.html
|
||||
import django.http
|
||||
import django.urls
|
||||
from django.conf import settings
|
||||
|
@ -68,6 +69,53 @@ class RemoteRepositoryViewTest(RmTestCase):
|
|||
']'
|
||||
self.assertJSONEqual(response.content.decode(), json)
|
||||
|
||||
def test_list_app_clear_filter_not_visible_when_no_active_filter(self):
|
||||
response = self.client.get(reverse('add_app', kwargs={'repo_id': self.repo.id}))
|
||||
html = lxml.html.fromstring(response.content)
|
||||
elements = html.cssselect('.rm-app-clear-filters')
|
||||
|
||||
self.assertEqual(0, len(elements), 'clear filter link should not be here')
|
||||
|
||||
def test_list_app_clear_filter_visible_when_remote_repo_filter_active(self):
|
||||
response = self.client.get(reverse('add_app', kwargs={
|
||||
'repo_id': self.repo.id,
|
||||
'remote_repo_id': self.remote_repo.id,
|
||||
}))
|
||||
|
||||
html = lxml.html.fromstring(response.content)
|
||||
elements = html.cssselect('.rm-app-clear-filters a')
|
||||
expectedUrl = reverse('add_app', kwargs={'repo_id': self.repo.id})
|
||||
|
||||
self.assertEqual(1, len(elements), 'clear filter link must be here')
|
||||
self.assertEqual(expectedUrl, elements[0].attrib['href'])
|
||||
|
||||
def test_list_app_clear_filter_visible_when_category_filter_active(self):
|
||||
response = self.client.get(reverse('add_app_with_category', kwargs={
|
||||
'repo_id': self.repo.id,
|
||||
'category_id': 1,
|
||||
}))
|
||||
|
||||
html = lxml.html.fromstring(response.content)
|
||||
elements = html.cssselect('.rm-app-clear-filters a')
|
||||
expectedUrl = reverse('add_app', kwargs={'repo_id': self.repo.id})
|
||||
|
||||
self.assertEqual(1, len(elements), 'clear filter link must be here')
|
||||
self.assertEqual(expectedUrl, elements[0].attrib['href'])
|
||||
|
||||
def test_list_app_clear_filter_visible_when_both_remote_repo_and_category_filters_active(self):
|
||||
response = self.client.get(reverse('add_app_with_category', kwargs={
|
||||
'repo_id': self.repo.id,
|
||||
'remote_repo_id': self.remote_repo.id,
|
||||
'category_id': 1,
|
||||
}))
|
||||
|
||||
html = lxml.html.fromstring(response.content)
|
||||
elements = html.cssselect('.rm-app-clear-filters a')
|
||||
expectedUrl = reverse('add_app', kwargs={'repo_id': self.repo.id})
|
||||
|
||||
self.assertEqual(1, len(elements), 'clear filter link must be here')
|
||||
self.assertEqual(expectedUrl, elements[0].attrib['href'])
|
||||
|
||||
def test_remote_app_details(self):
|
||||
# request remote app detail page
|
||||
kwargs = {'repo_id': self.repo.id, 'remote_repo_id': self.remote_repo.id,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
pep8
|
||||
coverage
|
||||
pylint-django
|
||||
lxml
|
||||
cssselect
|
||||
|
|
Loading…
Reference in New Issue