|
@@ -402,6 +402,37 @@ class ListFiltersTests(TestCase):
|
|
|
)
|
|
|
)
|
|
|
|
|
|
+ # Null/not null queries
|
|
|
+ request = self.request_factory.get('/', {'date_registered__isnull': 'True'})
|
|
|
+ changelist = self.get_changelist(request, Book, modeladmin)
|
|
|
+
|
|
|
+ # Make sure the correct queryset is returned
|
|
|
+ queryset = changelist.get_queryset(request)
|
|
|
+ self.assertEqual(queryset.count(), 1)
|
|
|
+ self.assertEqual(queryset[0], self.bio_book)
|
|
|
+
|
|
|
+ # Make sure the correct choice is selected
|
|
|
+ filterspec = changelist.get_filters(request)[0][4]
|
|
|
+ self.assertEqual(force_text(filterspec.title), 'date registered')
|
|
|
+ choice = select_by(filterspec.choices(changelist), 'display', 'No date')
|
|
|
+ self.assertEqual(choice['selected'], True)
|
|
|
+ self.assertEqual(choice['query_string'], '?date_registered__isnull=True')
|
|
|
+
|
|
|
+ request = self.request_factory.get('/', {'date_registered__isnull': 'False'})
|
|
|
+ changelist = self.get_changelist(request, Book, modeladmin)
|
|
|
+
|
|
|
+ # Make sure the correct queryset is returned
|
|
|
+ queryset = changelist.get_queryset(request)
|
|
|
+ self.assertEqual(queryset.count(), 3)
|
|
|
+ self.assertEqual(list(queryset), [self.gipsy_book, self.django_book, self.djangonaut_book])
|
|
|
+
|
|
|
+ # Make sure the correct choice is selected
|
|
|
+ filterspec = changelist.get_filters(request)[0][4]
|
|
|
+ self.assertEqual(force_text(filterspec.title), 'date registered')
|
|
|
+ choice = select_by(filterspec.choices(changelist), 'display', 'Has date')
|
|
|
+ self.assertEqual(choice['selected'], True)
|
|
|
+ self.assertEqual(choice['query_string'], '?date_registered__isnull=False')
|
|
|
+
|
|
|
@unittest.skipIf(
|
|
|
sys.platform.startswith('win'),
|
|
|
"Windows doesn't support setting a timezone that differs from the "
|