Skip to content

Commit fad636a

Browse files
committed
Adding tests for __in filter
Adding a series of tests that checks for __in filter usage.
1 parent 380e1e7 commit fad636a

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

rest_framework_filters/tests.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,11 @@ class ExplicitLookupsPersonDateFilter(FilterSet):
231231
class Meta:
232232
model = Person
233233

234+
class InSetLookupPersonFilter(FilterSet):
235+
pk = AllLookupsFilter('id')
236+
237+
class Meta:
238+
model = Person
234239

235240
class TestFilterSets(TestCase):
236241
def setUp(self):
@@ -626,3 +631,41 @@ class Meta:
626631
self.assertEqual(len(list(f)), 1)
627632
p = list(f)[0]
628633
self.assertEqual(p.name, "John")
634+
635+
def test_inset_filter(self):
636+
p1 = Person.objects.get(name="John").pk
637+
p2 = Person.objects.get(name="Mark").pk
638+
639+
ALL_GET = {
640+
'pk__in': u'%d,%d' % (p1, p2),
641+
}
642+
f = InSetLookupPersonFilter(ALL_GET, queryset=Person.objects.all())
643+
f = [x.pk for x in f]
644+
self.assertEqual(len(f), 2)
645+
self.assertIn(p1, f)
646+
self.assertIn(p2, f)
647+
648+
649+
INVALID_GET = {
650+
'pk__in': u'%d,c%d' % (p1, p2)
651+
}
652+
f = InSetLookupPersonFilter(INVALID_GET, queryset=Person.objects.all())
653+
self.assertEqual(len(list(f)), 0)
654+
655+
EXTRA_GET = {
656+
'pk__in': u'%d,%d,%d' % (p1, p2, p1*p2)
657+
}
658+
f = InSetLookupPersonFilter(EXTRA_GET, queryset=Person.objects.all())
659+
f = [x.pk for x in f]
660+
self.assertEqual(len(f), 2)
661+
self.assertIn(p1, f)
662+
self.assertIn(p2, f)
663+
664+
DISORDERED_GET = {
665+
'pk__in': u'%d,%d,%d' % (p2, p2*p1, p1)
666+
}
667+
f = InSetLookupPersonFilter(DISORDERED_GET, queryset=Person.objects.all())
668+
f = [x.pk for x in f]
669+
self.assertEqual(len(f), 2)
670+
self.assertIn(p1, f)
671+
self.assertIn(p2, f)

0 commit comments

Comments
 (0)