[tests] made fields nullable and adapted the test data and tests

django-5.0
Thomas Leichtfuß 2020-09-05 23:36:20 +02:00
parent 0d55340275
commit f52d006ba0
5 changed files with 62 additions and 42 deletions

View File

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

View File

@ -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')),
],
),
]

View File

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

View File

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

View File

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