mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-19 04:32:28 +03:00
add some tests
This commit is contained in:
parent
b8b0fc4973
commit
5dbeb2f891
|
@ -848,6 +848,28 @@ class OrderingFilterTests(TestCase):
|
||||||
with self.assertRaises(ImproperlyConfigured):
|
with self.assertRaises(ImproperlyConfigured):
|
||||||
view(request)
|
view(request)
|
||||||
|
|
||||||
|
def test_context_has_view_in_serializer(self):
|
||||||
|
class ExampleSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = OrderingFilterModel
|
||||||
|
fields = ('id', 'title', 'text')
|
||||||
|
|
||||||
|
def get_field_names(self, declared_fields, info):
|
||||||
|
view_is_instance = isinstance(self.context['view'], OrderingListView)
|
||||||
|
fields = super().get_field_names(declared_fields, info)
|
||||||
|
return [x for x in fields if x not in ['title']] if view_is_instance else fields
|
||||||
|
|
||||||
|
class OrderingListView(generics.ListAPIView):
|
||||||
|
queryset = OrderingFilterModel.objects.all()
|
||||||
|
filter_backends = (filters.OrderingFilter,)
|
||||||
|
serializer_class = ExampleSerializer
|
||||||
|
|
||||||
|
view = OrderingListView.as_view()
|
||||||
|
request = factory.get('/', {'ordering': 'id'})
|
||||||
|
response = view(request)
|
||||||
|
assert not {'title'}.issubset(set(response.data[0].keys()))
|
||||||
|
assert {'id', 'text'}.issubset(set(response.data[0].keys()))
|
||||||
|
|
||||||
|
|
||||||
class SensitiveOrderingFilterModel(models.Model):
|
class SensitiveOrderingFilterModel(models.Model):
|
||||||
username = models.CharField(max_length=20)
|
username = models.CharField(max_length=20)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user