mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-09 23:04:47 +03:00
Add test to exercise FilterSet proxying
This commit is contained in:
parent
1bd35ad355
commit
0eb99e6580
|
@ -79,12 +79,23 @@ if django_filters:
|
||||||
model = BaseFilterableItem
|
model = BaseFilterableItem
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
# Test the same filter using the deprecated internal FilterSet class.
|
||||||
|
class BaseFilterableItemFilterWithProxy(filters.FilterSet):
|
||||||
|
text = django_filters.CharFilter()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = BaseFilterableItem
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
class BaseFilterableItemFilterRootView(generics.ListCreateAPIView):
|
class BaseFilterableItemFilterRootView(generics.ListCreateAPIView):
|
||||||
queryset = FilterableItem.objects.all()
|
queryset = FilterableItem.objects.all()
|
||||||
serializer_class = FilterableItemSerializer
|
serializer_class = FilterableItemSerializer
|
||||||
filter_class = BaseFilterableItemFilter
|
filter_class = BaseFilterableItemFilter
|
||||||
filter_backends = (filters.DjangoFilterBackend,)
|
filter_backends = (filters.DjangoFilterBackend,)
|
||||||
|
|
||||||
|
class BaseFilterableItemFilterWithProxyRootView(BaseFilterableItemFilterRootView):
|
||||||
|
filter_class = BaseFilterableItemFilterWithProxy
|
||||||
|
|
||||||
# Regression test for #814
|
# Regression test for #814
|
||||||
class FilterFieldsQuerysetView(generics.ListCreateAPIView):
|
class FilterFieldsQuerysetView(generics.ListCreateAPIView):
|
||||||
queryset = FilterableItem.objects.all()
|
queryset = FilterableItem.objects.all()
|
||||||
|
@ -296,6 +307,18 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
self.assertEqual(len(response.data), 1)
|
self.assertEqual(len(response.data), 1)
|
||||||
|
|
||||||
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
|
def test_base_model_filter_with_proxy(self):
|
||||||
|
"""
|
||||||
|
The `get_filter_class` model checks should allow base model filters.
|
||||||
|
"""
|
||||||
|
view = BaseFilterableItemFilterWithProxyRootView.as_view()
|
||||||
|
|
||||||
|
request = factory.get('/?text=aaa')
|
||||||
|
response = view(request).render()
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
self.assertEqual(len(response.data), 1)
|
||||||
|
|
||||||
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
def test_unknown_filter(self):
|
def test_unknown_filter(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user