Skip to content

Commit 46a4e09

Browse files
author
Ryan P Kilby
authored
Merge pull request #184 from rpkilby/test-exclude-backend
Test filter exclusion at backend level
2 parents e6232a8 + 3d2baa4 commit 46a4e09

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

tests/test_backends.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ class SimpleViewSet(views.FilterFieldsUserViewSet):
6060
</form>
6161
""")
6262

63-
def test_request_obj_is_passed(self):
63+
def test_request_obj_is_passed(test):
6464
"""
6565
Ensure that the request object is passed from the backend to the filterset.
6666
See: https://github.com/philipn/django-rest-framework-filters/issues/149
6767
"""
6868
class RequestCheck(FilterSet):
6969
def __init__(self, *args, **kwargs):
7070
super(RequestCheck, self).__init__(*args, **kwargs)
71-
assert self.request is not None
71+
test.assertIsNotNone(self.request)
7272

7373
class Meta:
7474
model = models.User
@@ -81,3 +81,22 @@ class ViewSet(views.FilterFieldsUserViewSet):
8181
backend = view.filter_backends[0]
8282
request = view.initialize_request(factory.get('/'))
8383
backend().filter_queryset(request, view.get_queryset(), view)
84+
85+
def test_exclusion(self):
86+
class RequestCheck(FilterSet):
87+
class Meta:
88+
model = models.User
89+
fields = ['username']
90+
91+
class ViewSet(views.FilterFieldsUserViewSet):
92+
filter_class = RequestCheck
93+
94+
view = ViewSet(action_map={})
95+
backend = view.filter_backends[0]
96+
request = view.initialize_request(factory.get('/?username=user1'))
97+
qs = backend().filter_queryset(request, view.get_queryset(), view)
98+
self.assertEqual([u.pk for u in qs], [1])
99+
100+
request = view.initialize_request(factory.get('/?username!=user1'))
101+
qs = backend().filter_queryset(request, view.get_queryset(), view)
102+
self.assertEqual([u.pk for u in qs], [2])

0 commit comments

Comments
 (0)