[#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:
Julien Maulny 2018-04-30 22:43:54 +02:00
parent 7ee0fe0b00
commit 6eeeee1f7b
5 changed files with 69 additions and 7 deletions

View File

@ -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

View File

@ -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,

View File

@ -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>

View File

@ -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,

View File

@ -1,3 +1,5 @@
pep8
coverage
pylint-django
lxml
cssselect