diff --git a/tests/testapp/management/commands/createtestdata.py b/tests/testapp/management/commands/createtestdata.py index 9d99af3..1deda22 100644 --- a/tests/testapp/management/commands/createtestdata.py +++ b/tests/testapp/management/commands/createtestdata.py @@ -25,27 +25,33 @@ def create_test_data(): # TODO: create null values as well c_models = list() - for i in range(1, 36): - model_a = ModelA() - model_b = ModelB() - model_c = ModelC() + for i in range(36): - model_b.id = i - model_b.save() - model_c.id = i - model_c.save() - c_models.append(model_c) + if i > 0: + model_a = ModelA() + model_b = ModelB() + model_c = ModelC() + + model_b.id = i + model_b.save() + model_c.id = i + model_c.save() + c_models.append(model_c) + + model_a.dropdown_lte3 = None if i % 3 == 0 else i % 3 + model_a.dropdown_gt3 = i % 4 + model_a.choices_dropdown = i % 9 +1 + 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 + model_a.save() + model_a.c_models.set(c_models) + else: + model_a = ModelA() + model_a.save() - model_a.dropdown_lte3 = i % 3 - model_a.dropdown_gt3 = i % 4 - model_a.choices_dropdown = i % 9 +1 - 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 - model_a.save() - model_a.c_models.set(c_models) class Command(BaseCommand): diff --git a/tests/testapp/migrations/0001_initial.py b/tests/testapp/migrations/0001_initial.py index 81dd1fc..f1b3651 100644 --- a/tests/testapp/migrations/0001_initial.py +++ b/tests/testapp/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.16 on 2020-09-05 10:45 +# Generated by Django 2.2.16 on 2020-09-05 21:10 from django.db import migrations, models import django.db.models.deletion @@ -28,15 +28,15 @@ class Migration(migrations.Migration): name='ModelA', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('dropdown_lte3', models.IntegerField()), - ('dropdown_gt3', models.IntegerField()), - ('multiselect', models.IntegerField()), - ('multiselect_dropdown', models.IntegerField()), - ('choices_dropdown', models.CharField(blank=True, choices=[('1', 'one'), ('2', 'two'), ('3', 'three'), ('4', 'four'), ('5', 'five'), ('6', 'six'), ('7', 'seven'), ('8', 'eight'), ('9', 'nine')], max_length=255)), + ('dropdown_lte3', models.IntegerField(blank=True, null=True)), + ('dropdown_gt3', models.IntegerField(blank=True, null=True)), + ('multiselect', models.IntegerField(blank=True, null=True)), + ('multiselect_dropdown', models.IntegerField(blank=True, null=True)), + ('choices_dropdown', models.CharField(blank=True, choices=[('1', 'one'), ('2', 'two'), ('3', 'three'), ('4', 'four'), ('5', 'five'), ('6', 'six'), ('7', 'seven'), ('8', 'eight'), ('9', 'nine')], max_length=255, null=True)), ('c_models', models.ManyToManyField(to='testapp.ModelC')), - ('multiselect_related', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='multiselect_related_reverse', to='testapp.ModelB')), - ('multiselect_related_dropdown', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='multiselect_related_dropdown_reverse', to='testapp.ModelB')), - ('related_dropdown', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='related_dropdown_reverse', to='testapp.ModelB')), + ('multiselect_related', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='multiselect_related_reverse', to='testapp.ModelB')), + ('multiselect_related_dropdown', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='multiselect_related_dropdown_reverse', to='testapp.ModelB')), + ('related_dropdown', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='related_dropdown_reverse', to='testapp.ModelB')), ], ), ] diff --git a/tests/testapp/models.py b/tests/testapp/models.py index b86dc9e..6258c0c 100644 --- a/tests/testapp/models.py +++ b/tests/testapp/models.py @@ -29,14 +29,29 @@ class ModelA(models.Model): ('8', 'eight'), ('9', 'nine'), ) - dropdown_lte3 = models.IntegerField() - dropdown_gt3 = models.IntegerField() - multiselect = models.IntegerField() - multiselect_dropdown = models.IntegerField() - choices_dropdown = models.CharField(max_length=255, blank=True, choices=CHOICES) - related_dropdown = models.ForeignKey('ModelB', on_delete=models.CASCADE, related_name='related_dropdown_reverse') - multiselect_related = models.ForeignKey('ModelB', on_delete=models.CASCADE, related_name='multiselect_related_reverse') - multiselect_related_dropdown = models.ForeignKey('ModelB', on_delete=models.CASCADE, related_name='multiselect_related_dropdown_reverse') + dropdown_lte3 = models.IntegerField(blank=True, null=True) + dropdown_gt3 = models.IntegerField(blank=True, null=True) + multiselect = models.IntegerField(blank=True, null=True) + multiselect_dropdown = models.IntegerField(blank=True, null=True) + choices_dropdown = models.CharField(max_length=255, blank=True, null=True, choices=CHOICES) + related_dropdown = models.ForeignKey( + 'ModelB', + blank=True, + null=True, + on_delete=models.CASCADE, + related_name='related_dropdown_reverse') + multiselect_related = models.ForeignKey( + 'ModelB', + blank=True, + null=True, + on_delete=models.CASCADE, + related_name='multiselect_related_reverse') + multiselect_related_dropdown = models.ForeignKey( + 'ModelB', + blank=True, + null=True, + on_delete=models.CASCADE, + related_name='multiselect_related_dropdown_reverse') c_models = models.ManyToManyField('ModelC') diff --git a/tests/testapp/tests/test_filters.py b/tests/testapp/tests/test_filters.py index 91909a7..b625a27 100644 --- a/tests/testapp/tests/test_filters.py +++ b/tests/testapp/tests/test_filters.py @@ -34,8 +34,8 @@ class FilterTest(TestCase): def test_02_filtering(self): queries = ( - ('', 35), - ('dropdown_gt3=1&dropdown_lte3=0', 3), + ('', 36), + ('dropdown_gt3=1&dropdown_lte3__isnull=True', 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), @@ -49,4 +49,3 @@ class FilterTest(TestCase): resp = self.client.get(self.url + '?' + query) self.assertEqual(resp.status_code, 200) self.assertIn('{} selected'.format(count), resp.content.decode('utf8')) - diff --git a/tests/testapp/tests/test_live_filters.py b/tests/testapp/tests/test_live_filters.py index e505b6b..b48b951 100644 --- a/tests/testapp/tests/test_live_filters.py +++ b/tests/testapp/tests/test_live_filters.py @@ -65,19 +65,19 @@ class LiveFilterTest(StaticLiveServerTestCase): select_id = 'dropdown-gt3_filter_select' url_query = 'dropdown_gt3=2' self.use_dropdown_filter(select_id, '2', url_query, 9) - self.use_dropdown_filter(select_id, 'All', '', 35) + self.use_dropdown_filter(select_id, 'All', '', 36) # Check the choices dropdown filter: select_id = 'choices-dropdown_filter_select' url_query = 'choices_dropdown__exact=3' self.use_dropdown_filter(select_id, 'three', url_query, 4) - self.use_dropdown_filter(select_id, 'All', '', 35) + self.use_dropdown_filter(select_id, 'All', '', 36) # # Check the related dropdown filter: select_id = 'related-dropdown_filter_select' url_query = 'related_dropdown__id__exact=9' self.use_dropdown_filter(select_id, 'ModelB 9', url_query, 1) - self.use_dropdown_filter(select_id, 'All', '', 35) + self.use_dropdown_filter(select_id, 'All', '', 36) def use_multiselect_link(self, ul_num, li_num, item_count, selected_count, url_query): link = '//*[@id="changelist-filter"]/ul[{}]/li[{}]/a'.format(ul_num, li_num)