[tests] added simple filter tests

django-5.0
Thomas Leichtfuß 2020-09-05 13:32:11 +02:00
parent e9a4de626c
commit 6c04bcf6d9
2 changed files with 24 additions and 4 deletions

View File

@ -23,8 +23,9 @@ def create_test_data():
ModelA.objects.all().delete()
ModelB.objects.all().delete()
# TODO: create null values as well
c_models = list()
for i in range(1, 30):
for i in range(1, 36):
model_a = ModelA()
model_b = ModelB()
model_c = ModelC()
@ -38,8 +39,8 @@ def create_test_data():
model_a.dropdown_lte3 = i % 3
model_a.dropdown_gt3 = i % 4
model_a.choices_dropdown = i % 9 +1
model_a.multiselect = i % 4
model_a.multiselect_dropdown = i % 4
model_a.multiselect = i % 5
model_a.multiselect_dropdown = i % 6
model_a.related_dropdown = model_b
model_a.multiselect_related = model_b
model_a.multiselect_related_dropdown = model_b

View File

@ -17,7 +17,7 @@ class FilterTest(TestCase):
self.client.force_login(self.admin)
self.url = reverse('admin:testapp_modela_changelist')
def test_01_dropdown_select(self):
def test_01_dropdown(self):
resp = self.client.get(self.url)
self.assertEqual(resp.status_code, 200)
@ -31,3 +31,22 @@ class FilterTest(TestCase):
self.assertIn('choices-dropdown_filter_select', resp.content.decode('utf8'))
self.assertIn('related-dropdown_filter_select', resp.content.decode('utf8'))
self.assertIn('multiselect-related-dropdown_select', resp.content.decode('utf8'))
def test_02_filtering(self):
queries = (
('', 35),
('dropdown_gt3=1&dropdown_lte3=0', 3),
('dropdown_gt3=1&multiselect_dropdown__in=3', 3),
('dropdown_gt3=1&multiselect_dropdown__in=3,4,5', 6),
('choices_dropdown__exact=3&multiselect_dropdown__in=0,1,2', 2),
('multiselect_dropdown__in=0,1,2&related_dropdown__id__exact=6', 1),
('related_dropdown__id__exact=6&multiselect_dropdown__in=3,4,5', 0),
('multiselect_dropdown__in=3,4,5&multiselect_related__id__in=35,34,33,32', 3),
('multiselect_dropdown__in=3,4,5&multiselect_related_dropdown__id__in=29,30,31,32,33,34,35', 4),
('boolean_annotation__exact=1&multiselect__in=0,2,4', 14),
)
for query, count in queries:
resp = self.client.get(self.url + '?' + query)
self.assertEqual(resp.status_code, 200)
self.assertIn('{} selected'.format(count), resp.content.decode('utf8'))