mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-16 19:41:06 +03:00
converted filters tests asserts to pytest style (#4711)
This commit is contained in:
parent
42d6098c74
commit
9f4c9691f4
|
@ -155,8 +155,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
|
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, self.data)
|
assert response.data == self.data
|
||||||
|
|
||||||
self.assertTrue(issubclass(w[-1].category, PendingDeprecationWarning))
|
self.assertTrue(issubclass(w[-1].category, PendingDeprecationWarning))
|
||||||
self.assertIn("'rest_framework.filters.DjangoFilterBackend' is pending deprecation.", str(w[-1].message))
|
self.assertIn("'rest_framework.filters.DjangoFilterBackend' is pending deprecation.", str(w[-1].message))
|
||||||
|
@ -175,9 +175,9 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
|
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, self.data)
|
assert response.data == self.data
|
||||||
self.assertEqual(len(w), 0)
|
assert len(w) == 0
|
||||||
|
|
||||||
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
def test_get_filtered_fields_root_view(self):
|
def test_get_filtered_fields_root_view(self):
|
||||||
|
@ -189,24 +189,24 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
# Basic test with no filter.
|
# Basic test with no filter.
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, self.data)
|
assert response.data == self.data
|
||||||
|
|
||||||
# Tests that the decimal filter works.
|
# Tests that the decimal filter works.
|
||||||
search_decimal = Decimal('2.25')
|
search_decimal = Decimal('2.25')
|
||||||
request = factory.get('/', {'decimal': '%s' % search_decimal})
|
request = factory.get('/', {'decimal': '%s' % search_decimal})
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if Decimal(f['decimal']) == search_decimal]
|
expected_data = [f for f in self.data if Decimal(f['decimal']) == search_decimal]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
# Tests that the date filter works.
|
# Tests that the date filter works.
|
||||||
search_date = datetime.date(2012, 9, 22)
|
search_date = datetime.date(2012, 9, 22)
|
||||||
request = factory.get('/', {'date': '%s' % search_date}) # search_date str: '2012-09-22'
|
request = factory.get('/', {'date': '%s' % search_date}) # search_date str: '2012-09-22'
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if parse_date(f['date']) == search_date]
|
expected_data = [f for f in self.data if parse_date(f['date']) == search_date]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
def test_filter_with_queryset(self):
|
def test_filter_with_queryset(self):
|
||||||
|
@ -219,9 +219,9 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
search_decimal = Decimal('2.25')
|
search_decimal = Decimal('2.25')
|
||||||
request = factory.get('/', {'decimal': '%s' % search_decimal})
|
request = factory.get('/', {'decimal': '%s' % search_decimal})
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if Decimal(f['decimal']) == search_decimal]
|
expected_data = [f for f in self.data if Decimal(f['decimal']) == search_decimal]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
def test_filter_with_get_queryset_only(self):
|
def test_filter_with_get_queryset_only(self):
|
||||||
|
@ -245,32 +245,32 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
# Basic test with no filter.
|
# Basic test with no filter.
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, self.data)
|
assert response.data == self.data
|
||||||
|
|
||||||
# Tests that the decimal filter set with 'lt' in the filter class works.
|
# Tests that the decimal filter set with 'lt' in the filter class works.
|
||||||
search_decimal = Decimal('4.25')
|
search_decimal = Decimal('4.25')
|
||||||
request = factory.get('/', {'decimal': '%s' % search_decimal})
|
request = factory.get('/', {'decimal': '%s' % search_decimal})
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if Decimal(f['decimal']) < search_decimal]
|
expected_data = [f for f in self.data if Decimal(f['decimal']) < search_decimal]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
# Tests that the date filter set with 'gt' in the filter class works.
|
# Tests that the date filter set with 'gt' in the filter class works.
|
||||||
search_date = datetime.date(2012, 10, 2)
|
search_date = datetime.date(2012, 10, 2)
|
||||||
request = factory.get('/', {'date': '%s' % search_date}) # search_date str: '2012-10-02'
|
request = factory.get('/', {'date': '%s' % search_date}) # search_date str: '2012-10-02'
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if parse_date(f['date']) > search_date]
|
expected_data = [f for f in self.data if parse_date(f['date']) > search_date]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
# Tests that the text filter set with 'icontains' in the filter class works.
|
# Tests that the text filter set with 'icontains' in the filter class works.
|
||||||
search_text = 'ff'
|
search_text = 'ff'
|
||||||
request = factory.get('/', {'text': '%s' % search_text})
|
request = factory.get('/', {'text': '%s' % search_text})
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if search_text in f['text'].lower()]
|
expected_data = [f for f in self.data if search_text in f['text'].lower()]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
# Tests that multiple filters works.
|
# Tests that multiple filters works.
|
||||||
search_decimal = Decimal('5.25')
|
search_decimal = Decimal('5.25')
|
||||||
|
@ -280,10 +280,10 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
'date': '%s' % (search_date,)
|
'date': '%s' % (search_date,)
|
||||||
})
|
})
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
expected_data = [f for f in self.data if parse_date(f['date']) > search_date and
|
expected_data = [f for f in self.data if parse_date(f['date']) > search_date and
|
||||||
Decimal(f['decimal']) < search_decimal]
|
Decimal(f['decimal']) < search_decimal]
|
||||||
self.assertEqual(response.data, expected_data)
|
assert response.data == expected_data
|
||||||
|
|
||||||
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
def test_incorrectly_configured_filter(self):
|
def test_incorrectly_configured_filter(self):
|
||||||
|
@ -304,8 +304,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
|
|
||||||
request = factory.get('/?text=aaa')
|
request = factory.get('/?text=aaa')
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(len(response.data), 1)
|
assert len(response.data) == 1
|
||||||
|
|
||||||
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
@unittest.skipUnless(django_filters, 'django-filter not installed')
|
||||||
def test_base_model_filter_with_proxy(self):
|
def test_base_model_filter_with_proxy(self):
|
||||||
|
@ -316,8 +316,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
|
|
||||||
request = factory.get('/?text=aaa')
|
request = factory.get('/?text=aaa')
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(len(response.data), 1)
|
assert 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):
|
||||||
|
@ -329,7 +329,7 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
|
||||||
search_integer = 10
|
search_integer = 10
|
||||||
request = factory.get('/', {'integer': '%s' % search_integer})
|
request = factory.get('/', {'integer': '%s' % search_integer})
|
||||||
response = view(request).render()
|
response = view(request).render()
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
|
|
||||||
|
|
||||||
@override_settings(ROOT_URLCONF='tests.test_filters')
|
@override_settings(ROOT_URLCONF='tests.test_filters')
|
||||||
|
@ -351,8 +351,8 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
|
||||||
|
|
||||||
# Basic test with no filter.
|
# Basic test with no filter.
|
||||||
response = self.client.get(self._get_url(item))
|
response = self.client.get(self._get_url(item))
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, data)
|
assert response.data == data
|
||||||
|
|
||||||
# Tests that the decimal filter set that should fail.
|
# Tests that the decimal filter set that should fail.
|
||||||
search_decimal = Decimal('4.25')
|
search_decimal = Decimal('4.25')
|
||||||
|
@ -360,7 +360,7 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
'{url}'.format(url=self._get_url(high_item)),
|
'{url}'.format(url=self._get_url(high_item)),
|
||||||
{'decimal': '{param}'.format(param=search_decimal)})
|
{'decimal': '{param}'.format(param=search_decimal)})
|
||||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
assert response.status_code == status.HTTP_404_NOT_FOUND
|
||||||
|
|
||||||
# Tests that the decimal filter set that should succeed.
|
# Tests that the decimal filter set that should succeed.
|
||||||
search_decimal = Decimal('4.25')
|
search_decimal = Decimal('4.25')
|
||||||
|
@ -369,8 +369,8 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
'{url}'.format(url=self._get_url(low_item)),
|
'{url}'.format(url=self._get_url(low_item)),
|
||||||
{'decimal': '{param}'.format(param=search_decimal)})
|
{'decimal': '{param}'.format(param=search_decimal)})
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, low_item_data)
|
assert response.data == low_item_data
|
||||||
|
|
||||||
# Tests that multiple filters works.
|
# Tests that multiple filters works.
|
||||||
search_decimal = Decimal('5.25')
|
search_decimal = Decimal('5.25')
|
||||||
|
@ -382,8 +382,8 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
|
||||||
'decimal': '{decimal}'.format(decimal=search_decimal),
|
'decimal': '{decimal}'.format(decimal=search_decimal),
|
||||||
'date': '{date}'.format(date=search_date)
|
'date': '{date}'.format(date=search_date)
|
||||||
})
|
})
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
assert response.status_code == status.HTTP_200_OK
|
||||||
self.assertEqual(response.data, valid_item_data)
|
assert response.data == valid_item_data
|
||||||
|
|
||||||
|
|
||||||
class SearchFilterModel(models.Model):
|
class SearchFilterModel(models.Model):
|
||||||
|
@ -424,13 +424,10 @@ class SearchFilterTests(TestCase):
|
||||||
view = SearchListView.as_view()
|
view = SearchListView.as_view()
|
||||||
request = factory.get('/', {'search': 'b'})
|
request = factory.get('/', {'search': 'b'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, 'title': 'z', 'text': 'abc'},
|
||||||
[
|
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
||||||
{'id': 1, 'title': 'z', 'text': 'abc'},
|
]
|
||||||
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_exact_search(self):
|
def test_exact_search(self):
|
||||||
class SearchListView(generics.ListAPIView):
|
class SearchListView(generics.ListAPIView):
|
||||||
|
@ -442,12 +439,9 @@ class SearchFilterTests(TestCase):
|
||||||
view = SearchListView.as_view()
|
view = SearchListView.as_view()
|
||||||
request = factory.get('/', {'search': 'zzz'})
|
request = factory.get('/', {'search': 'zzz'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, 'title': 'zzz', 'text': 'cde'}
|
||||||
[
|
]
|
||||||
{'id': 3, 'title': 'zzz', 'text': 'cde'}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_startswith_search(self):
|
def test_startswith_search(self):
|
||||||
class SearchListView(generics.ListAPIView):
|
class SearchListView(generics.ListAPIView):
|
||||||
|
@ -459,12 +453,9 @@ class SearchFilterTests(TestCase):
|
||||||
view = SearchListView.as_view()
|
view = SearchListView.as_view()
|
||||||
request = factory.get('/', {'search': 'b'})
|
request = factory.get('/', {'search': 'b'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
||||||
[
|
]
|
||||||
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_regexp_search(self):
|
def test_regexp_search(self):
|
||||||
class SearchListView(generics.ListAPIView):
|
class SearchListView(generics.ListAPIView):
|
||||||
|
@ -476,12 +467,9 @@ class SearchFilterTests(TestCase):
|
||||||
view = SearchListView.as_view()
|
view = SearchListView.as_view()
|
||||||
request = factory.get('/', {'search': 'z{2} ^b'})
|
request = factory.get('/', {'search': 'z{2} ^b'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
||||||
[
|
]
|
||||||
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_search_with_nonstandard_search_param(self):
|
def test_search_with_nonstandard_search_param(self):
|
||||||
with override_settings(REST_FRAMEWORK={'SEARCH_PARAM': 'query'}):
|
with override_settings(REST_FRAMEWORK={'SEARCH_PARAM': 'query'}):
|
||||||
|
@ -496,13 +484,10 @@ class SearchFilterTests(TestCase):
|
||||||
view = SearchListView.as_view()
|
view = SearchListView.as_view()
|
||||||
request = factory.get('/', {'query': 'b'})
|
request = factory.get('/', {'query': 'b'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, 'title': 'z', 'text': 'abc'},
|
||||||
[
|
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
||||||
{'id': 1, 'title': 'z', 'text': 'abc'},
|
]
|
||||||
{'id': 2, 'title': 'zz', 'text': 'bcd'}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
reload_module(filters)
|
reload_module(filters)
|
||||||
|
|
||||||
|
@ -528,15 +513,13 @@ class SearchFilterFkTests(TestCase):
|
||||||
filter_ = filters.SearchFilter()
|
filter_ = filters.SearchFilter()
|
||||||
prefixes = [''] + list(filter_.lookup_prefixes)
|
prefixes = [''] + list(filter_.lookup_prefixes)
|
||||||
for prefix in prefixes:
|
for prefix in prefixes:
|
||||||
self.assertFalse(
|
assert not filter_.must_call_distinct(
|
||||||
filter_.must_call_distinct(
|
SearchFilterModelFk._meta,
|
||||||
SearchFilterModelFk._meta, ["%stitle" % prefix]
|
["%stitle" % prefix]
|
||||||
)
|
|
||||||
)
|
)
|
||||||
self.assertFalse(
|
assert not filter_.must_call_distinct(
|
||||||
filter_.must_call_distinct(
|
SearchFilterModelFk._meta,
|
||||||
SearchFilterModelFk._meta, ["%stitle" % prefix, "%sattribute__label" % prefix]
|
["%stitle" % prefix, "%sattribute__label" % prefix]
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_must_call_distinct_restores_meta_for_each_field(self):
|
def test_must_call_distinct_restores_meta_for_each_field(self):
|
||||||
|
@ -545,10 +528,9 @@ class SearchFilterFkTests(TestCase):
|
||||||
filter_ = filters.SearchFilter()
|
filter_ = filters.SearchFilter()
|
||||||
prefixes = [''] + list(filter_.lookup_prefixes)
|
prefixes = [''] + list(filter_.lookup_prefixes)
|
||||||
for prefix in prefixes:
|
for prefix in prefixes:
|
||||||
self.assertFalse(
|
assert not filter_.must_call_distinct(
|
||||||
filter_.must_call_distinct(
|
SearchFilterModelFk._meta,
|
||||||
SearchFilterModelFk._meta, ["%sattribute__label" % prefix, "%stitle" % prefix]
|
["%sattribute__label" % prefix, "%stitle" % prefix]
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -596,21 +578,20 @@ class SearchFilterM2MTests(TestCase):
|
||||||
view = SearchListView.as_view()
|
view = SearchListView.as_view()
|
||||||
request = factory.get('/', {'search': 'zz'})
|
request = factory.get('/', {'search': 'zz'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(len(response.data), 1)
|
assert len(response.data) == 1
|
||||||
|
|
||||||
def test_must_call_distinct(self):
|
def test_must_call_distinct(self):
|
||||||
filter_ = filters.SearchFilter()
|
filter_ = filters.SearchFilter()
|
||||||
prefixes = [''] + list(filter_.lookup_prefixes)
|
prefixes = [''] + list(filter_.lookup_prefixes)
|
||||||
for prefix in prefixes:
|
for prefix in prefixes:
|
||||||
self.assertFalse(
|
assert not filter_.must_call_distinct(
|
||||||
filter_.must_call_distinct(
|
SearchFilterModelM2M._meta,
|
||||||
SearchFilterModelM2M._meta, ["%stitle" % prefix]
|
["%stitle" % prefix]
|
||||||
)
|
|
||||||
)
|
)
|
||||||
self.assertTrue(
|
|
||||||
filter_.must_call_distinct(
|
assert filter_.must_call_distinct(
|
||||||
SearchFilterModelM2M._meta, ["%stitle" % prefix, "%sattributes__label" % prefix]
|
SearchFilterModelM2M._meta,
|
||||||
)
|
["%stitle" % prefix, "%sattributes__label" % prefix]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -672,14 +653,11 @@ class DjangoFilterOrderingTests(TestCase):
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = view(request)
|
response = view(request)
|
||||||
|
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, 'date': '2014-10-08', 'text': 'cde'},
|
||||||
[
|
{'id': 2, 'date': '2013-10-08', 'text': 'bcd'},
|
||||||
{'id': 3, 'date': '2014-10-08', 'text': 'cde'},
|
{'id': 1, 'date': '2012-10-08', 'text': 'abc'}
|
||||||
{'id': 2, 'date': '2013-10-08', 'text': 'bcd'},
|
]
|
||||||
{'id': 1, 'date': '2012-10-08', 'text': 'abc'}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class OrderingFilterTests(TestCase):
|
class OrderingFilterTests(TestCase):
|
||||||
|
@ -713,14 +691,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'ordering': 'text'})
|
request = factory.get('/', {'ordering': 'text'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_reverse_ordering(self):
|
def test_reverse_ordering(self):
|
||||||
class OrderingListView(generics.ListAPIView):
|
class OrderingListView(generics.ListAPIView):
|
||||||
|
@ -733,14 +708,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'ordering': '-text'})
|
request = factory.get('/', {'ordering': '-text'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_incorrectfield_ordering(self):
|
def test_incorrectfield_ordering(self):
|
||||||
class OrderingListView(generics.ListAPIView):
|
class OrderingListView(generics.ListAPIView):
|
||||||
|
@ -753,14 +725,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'ordering': 'foobar'})
|
request = factory.get('/', {'ordering': 'foobar'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_default_ordering(self):
|
def test_default_ordering(self):
|
||||||
class OrderingListView(generics.ListAPIView):
|
class OrderingListView(generics.ListAPIView):
|
||||||
|
@ -773,14 +742,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('')
|
request = factory.get('')
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_default_ordering_using_string(self):
|
def test_default_ordering_using_string(self):
|
||||||
class OrderingListView(generics.ListAPIView):
|
class OrderingListView(generics.ListAPIView):
|
||||||
|
@ -793,14 +759,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('')
|
request = factory.get('')
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_ordering_by_aggregate_field(self):
|
def test_ordering_by_aggregate_field(self):
|
||||||
# create some related models to aggregate order by
|
# create some related models to aggregate order by
|
||||||
|
@ -824,14 +787,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'ordering': 'relateds__count'})
|
request = factory.get('/', {'ordering': 'relateds__count'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
[
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
]
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_ordering_with_nonstandard_ordering_param(self):
|
def test_ordering_with_nonstandard_ordering_param(self):
|
||||||
with override_settings(REST_FRAMEWORK={'ORDERING_PARAM': 'order'}):
|
with override_settings(REST_FRAMEWORK={'ORDERING_PARAM': 'order'}):
|
||||||
|
@ -847,14 +807,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'order': 'text'})
|
request = factory.get('/', {'order': 'text'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
reload_module(filters)
|
reload_module(filters)
|
||||||
|
|
||||||
|
@ -884,14 +841,11 @@ class OrderingFilterTests(TestCase):
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'ordering': 'text'})
|
request = factory.get('/', {'ordering': 'text'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
[
|
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
||||||
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
|
]
|
||||||
{'id': 3, 'title': 'xwv', 'text': 'cde'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_ordering_with_improper_configuration(self):
|
def test_ordering_with_improper_configuration(self):
|
||||||
class OrderingListView(generics.ListAPIView):
|
class OrderingListView(generics.ListAPIView):
|
||||||
|
@ -967,14 +921,11 @@ class SensitiveOrderingFilterTests(TestCase):
|
||||||
username_field = 'username'
|
username_field = 'username'
|
||||||
|
|
||||||
# Note: Inverse username ordering correctly applied.
|
# Note: Inverse username ordering correctly applied.
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 3, username_field: 'userC'},
|
||||||
[
|
{'id': 2, username_field: 'userB'},
|
||||||
{'id': 3, username_field: 'userC'},
|
{'id': 1, username_field: 'userA'},
|
||||||
{'id': 2, username_field: 'userB'},
|
]
|
||||||
{'id': 1, username_field: 'userA'},
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_cannot_order_by_non_serializer_fields(self):
|
def test_cannot_order_by_non_serializer_fields(self):
|
||||||
for serializer_cls in [
|
for serializer_cls in [
|
||||||
|
@ -997,11 +948,8 @@ class SensitiveOrderingFilterTests(TestCase):
|
||||||
username_field = 'username'
|
username_field = 'username'
|
||||||
|
|
||||||
# Note: The passwords are not in order. Default ordering is used.
|
# Note: The passwords are not in order. Default ordering is used.
|
||||||
self.assertEqual(
|
assert response.data == [
|
||||||
response.data,
|
{'id': 1, username_field: 'userA'}, # PassB
|
||||||
[
|
{'id': 2, username_field: 'userB'}, # PassC
|
||||||
{'id': 1, username_field: 'userA'}, # PassB
|
{'id': 3, username_field: 'userC'}, # PassA
|
||||||
{'id': 2, username_field: 'userB'}, # PassC
|
]
|
||||||
{'id': 3, username_field: 'userC'}, # PassA
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user