Skip to content

Commit

Permalink
Update filter backend+tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryan P Kilby committed Oct 24, 2017
1 parent a821412 commit 9e6959b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
4 changes: 1 addition & 3 deletions django_filters/rest_framework/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,7 @@ def filter_queryset(self, request, queryset, view):
if filter_class:
filterset = filter_class(request.query_params, queryset=queryset, request=request)
if not filterset.is_valid() and self.raise_exception:
from rest_framework.exceptions import ValidationError

raise ValidationError(utils.raw_validation(filterset.errors))
raise utils.translate_validation(filterset.errors)
return filterset.qs
return queryset

Expand Down
26 changes: 26 additions & 0 deletions tests/rest_framework/test_backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
backends
)

from ..models import Article
from .models import FilterableItem

factory = APIRequestFactory()
Expand Down Expand Up @@ -223,3 +224,28 @@ class Backend(DjangoFilterBackend):
# derived filter_class.Meta should inherit from default_filter_set.Meta
self.assertIn(BooleanField, filter_overrides)
self.assertDictEqual(filter_overrides[BooleanField], {})


class ValidationErrorTests(TestCase):

def test_errors(self):
class F(FilterSet):
class Meta:
model = Article
fields = ['id', 'author', 'name']

view = FilterFieldsRootView()
backend = DjangoFilterBackend()
request = factory.get('/?id=foo&author=bar&name=baz')
request = view.initialize_request(request)
queryset = Article.objects.all()
view.filter_class = F

with self.assertRaises(serializers.ValidationError) as exc:
backend.filter_queryset(request, queryset, view)

# test output, does not include error code
self.assertDictEqual(exc.exception.detail, {
'id': ['Enter a number.'],
'author': ['Select a valid choice. That choice is not one of the available choices.'],
})

0 comments on commit 9e6959b

Please sign in to comment.