Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
9f4c9691
Commit
9f4c9691
authored
Nov 28, 2016
by
Asif Saifuddin Auvi
Committed by
Tom Christie
Nov 28, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
converted filters tests asserts to pytest style (#4711)
parent
42d6098c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
124 additions
and
176 deletions
+124
-176
tests/test_filters.py
+124
-176
No files found.
tests/test_filters.py
View file @
9f4c9691
...
...
@@ -155,8 +155,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
request
=
factory
.
get
(
'/'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
self
.
data
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
self
.
data
self
.
assertTrue
(
issubclass
(
w
[
-
1
]
.
category
,
PendingDeprecationWarning
))
self
.
assertIn
(
"'rest_framework.filters.DjangoFilterBackend' is pending deprecation."
,
str
(
w
[
-
1
]
.
message
))
...
...
@@ -175,9 +175,9 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
request
=
factory
.
get
(
'/'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
self
.
data
)
self
.
assertEqual
(
len
(
w
),
0
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
self
.
data
assert
len
(
w
)
==
0
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_get_filtered_fields_root_view
(
self
):
...
...
@@ -189,24 +189,24 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
# Basic test with no filter.
request
=
factory
.
get
(
'/'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
self
.
data
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
self
.
data
# Tests that the decimal filter works.
search_decimal
=
Decimal
(
'2.25'
)
request
=
factory
.
get
(
'/'
,
{
'decimal'
:
'
%
s'
%
search_decimal
})
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
]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
# Tests that the date filter works.
search_date
=
datetime
.
date
(
2012
,
9
,
22
)
request
=
factory
.
get
(
'/'
,
{
'date'
:
'
%
s'
%
search_date
})
# search_date str: '2012-09-22'
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
]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_filter_with_queryset
(
self
):
...
...
@@ -219,9 +219,9 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
search_decimal
=
Decimal
(
'2.25'
)
request
=
factory
.
get
(
'/'
,
{
'decimal'
:
'
%
s'
%
search_decimal
})
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
]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_filter_with_get_queryset_only
(
self
):
...
...
@@ -245,32 +245,32 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
# Basic test with no filter.
request
=
factory
.
get
(
'/'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
self
.
data
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
self
.
data
# Tests that the decimal filter set with 'lt' in the filter class works.
search_decimal
=
Decimal
(
'4.25'
)
request
=
factory
.
get
(
'/'
,
{
'decimal'
:
'
%
s'
%
search_decimal
})
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
]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
# Tests that the date filter set with 'gt' in the filter class works.
search_date
=
datetime
.
date
(
2012
,
10
,
2
)
request
=
factory
.
get
(
'/'
,
{
'date'
:
'
%
s'
%
search_date
})
# search_date str: '2012-10-02'
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
]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
# Tests that the text filter set with 'icontains' in the filter class works.
search_text
=
'ff'
request
=
factory
.
get
(
'/'
,
{
'text'
:
'
%
s'
%
search_text
})
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
()]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
# Tests that multiple filters works.
search_decimal
=
Decimal
(
'5.25'
)
...
...
@@ -280,10 +280,10 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
'date'
:
'
%
s'
%
(
search_date
,)
})
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
Decimal
(
f
[
'decimal'
])
<
search_decimal
]
self
.
assertEqual
(
response
.
data
,
expected_data
)
assert
response
.
data
==
expected_data
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_incorrectly_configured_filter
(
self
):
...
...
@@ -304,8 +304,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
request
=
factory
.
get
(
'/?text=aaa'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
len
(
response
.
data
)
==
1
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_base_model_filter_with_proxy
(
self
):
...
...
@@ -316,8 +316,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
request
=
factory
.
get
(
'/?text=aaa'
)
response
=
view
(
request
)
.
render
()
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
len
(
response
.
data
)
==
1
@unittest.skipUnless
(
django_filters
,
'django-filter not installed'
)
def
test_unknown_filter
(
self
):
...
...
@@ -329,7 +329,7 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
search_integer
=
10
request
=
factory
.
get
(
'/'
,
{
'integer'
:
'
%
s'
%
search_integer
})
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'
)
...
...
@@ -351,8 +351,8 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
# Basic test with no filter.
response
=
self
.
client
.
get
(
self
.
_get_url
(
item
))
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
data
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
data
# Tests that the decimal filter set that should fail.
search_decimal
=
Decimal
(
'4.25'
)
...
...
@@ -360,7 +360,7 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
response
=
self
.
client
.
get
(
'{url}'
.
format
(
url
=
self
.
_get_url
(
high_item
)),
{
'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.
search_decimal
=
Decimal
(
'4.25'
)
...
...
@@ -369,8 +369,8 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
response
=
self
.
client
.
get
(
'{url}'
.
format
(
url
=
self
.
_get_url
(
low_item
)),
{
'decimal'
:
'{param}'
.
format
(
param
=
search_decimal
)})
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
low_item_data
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
low_item_data
# Tests that multiple filters works.
search_decimal
=
Decimal
(
'5.25'
)
...
...
@@ -382,8 +382,8 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase):
'decimal'
:
'{decimal}'
.
format
(
decimal
=
search_decimal
),
'date'
:
'{date}'
.
format
(
date
=
search_date
)
})
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
self
.
assertEqual
(
response
.
data
,
valid_item_data
)
assert
response
.
status_code
==
status
.
HTTP_200_OK
assert
response
.
data
==
valid_item_data
class
SearchFilterModel
(
models
.
Model
):
...
...
@@ -424,13 +424,10 @@ class SearchFilterTests(TestCase):
view
=
SearchListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'search'
:
'b'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
'title'
:
'z'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
'title'
:
'z'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
def
test_exact_search
(
self
):
class
SearchListView
(
generics
.
ListAPIView
):
...
...
@@ -442,12 +439,9 @@ class SearchFilterTests(TestCase):
view
=
SearchListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'search'
:
'zzz'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
'title'
:
'zzz'
,
'text'
:
'cde'
}
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
'title'
:
'zzz'
,
'text'
:
'cde'
}
]
def
test_startswith_search
(
self
):
class
SearchListView
(
generics
.
ListAPIView
):
...
...
@@ -459,12 +453,9 @@ class SearchFilterTests(TestCase):
view
=
SearchListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'search'
:
'b'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
)
assert
response
.
data
==
[
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
def
test_regexp_search
(
self
):
class
SearchListView
(
generics
.
ListAPIView
):
...
...
@@ -476,12 +467,9 @@ class SearchFilterTests(TestCase):
view
=
SearchListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'search'
:
'z{2} ^b'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
)
assert
response
.
data
==
[
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
def
test_search_with_nonstandard_search_param
(
self
):
with
override_settings
(
REST_FRAMEWORK
=
{
'SEARCH_PARAM'
:
'query'
}):
...
...
@@ -496,13 +484,10 @@ class SearchFilterTests(TestCase):
view
=
SearchListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'query'
:
'b'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
'title'
:
'z'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
'title'
:
'z'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
reload_module
(
filters
)
...
...
@@ -528,15 +513,13 @@ class SearchFilterFkTests(TestCase):
filter_
=
filters
.
SearchFilter
()
prefixes
=
[
''
]
+
list
(
filter_
.
lookup_prefixes
)
for
prefix
in
prefixes
:
self
.
assertFalse
(
filter_
.
must_call_distinct
(
SearchFilterModelFk
.
_meta
,
[
"
%
stitle"
%
prefix
]
)
assert
not
filter_
.
must_call_distinct
(
SearchFilterModelFk
.
_meta
,
[
"
%
stitle"
%
prefix
]
)
self
.
assertFalse
(
filter_
.
must_call_distinct
(
SearchFilterModelFk
.
_meta
,
[
"
%
stitle"
%
prefix
,
"
%
sattribute__label"
%
prefix
]
)
assert
not
filter_
.
must_call_distinct
(
SearchFilterModelFk
.
_meta
,
[
"
%
stitle"
%
prefix
,
"
%
sattribute__label"
%
prefix
]
)
def
test_must_call_distinct_restores_meta_for_each_field
(
self
):
...
...
@@ -545,10 +528,9 @@ class SearchFilterFkTests(TestCase):
filter_
=
filters
.
SearchFilter
()
prefixes
=
[
''
]
+
list
(
filter_
.
lookup_prefixes
)
for
prefix
in
prefixes
:
self
.
assertFalse
(
filter_
.
must_call_distinct
(
SearchFilterModelFk
.
_meta
,
[
"
%
sattribute__label"
%
prefix
,
"
%
stitle"
%
prefix
]
)
assert
not
filter_
.
must_call_distinct
(
SearchFilterModelFk
.
_meta
,
[
"
%
sattribute__label"
%
prefix
,
"
%
stitle"
%
prefix
]
)
...
...
@@ -596,21 +578,20 @@ class SearchFilterM2MTests(TestCase):
view
=
SearchListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'search'
:
'zz'
})
response
=
view
(
request
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
assert
len
(
response
.
data
)
==
1
def
test_must_call_distinct
(
self
):
filter_
=
filters
.
SearchFilter
()
prefixes
=
[
''
]
+
list
(
filter_
.
lookup_prefixes
)
for
prefix
in
prefixes
:
self
.
assertFalse
(
filter_
.
must_call_distinct
(
SearchFilterModelM2M
.
_meta
,
[
"
%
stitle"
%
prefix
]
)
assert
not
filter_
.
must_call_distinct
(
SearchFilterModelM2M
.
_meta
,
[
"
%
stitle"
%
prefix
]
)
self
.
assertTrue
(
filter_
.
must_call_distinct
(
SearchFilterModelM2M
.
_meta
,
[
"
%
stitle"
%
prefix
,
"
%
sattributes__label"
%
prefix
]
)
assert
filter_
.
must_call_distinct
(
SearchFilterModelM2M
.
_meta
,
[
"
%
stitle"
%
prefix
,
"
%
sattributes__label"
%
prefix
]
)
...
...
@@ -672,14 +653,11 @@ class DjangoFilterOrderingTests(TestCase):
request
=
factory
.
get
(
'/'
)
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
'date'
:
'2014-10-08'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'date'
:
'2013-10-08'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'date'
:
'2012-10-08'
,
'text'
:
'abc'
}
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
'date'
:
'2014-10-08'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'date'
:
'2013-10-08'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'date'
:
'2012-10-08'
,
'text'
:
'abc'
}
]
class
OrderingFilterTests
(
TestCase
):
...
...
@@ -713,14 +691,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'ordering'
:
'text'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
def
test_reverse_ordering
(
self
):
class
OrderingListView
(
generics
.
ListAPIView
):
...
...
@@ -733,14 +708,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'ordering'
:
'-text'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
def
test_incorrectfield_ordering
(
self
):
class
OrderingListView
(
generics
.
ListAPIView
):
...
...
@@ -753,14 +725,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'ordering'
:
'foobar'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
def
test_default_ordering
(
self
):
class
OrderingListView
(
generics
.
ListAPIView
):
...
...
@@ -773,14 +742,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
''
)
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
def
test_default_ordering_using_string
(
self
):
class
OrderingListView
(
generics
.
ListAPIView
):
...
...
@@ -793,14 +759,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
''
)
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
]
def
test_ordering_by_aggregate_field
(
self
):
# create some related models to aggregate order by
...
...
@@ -824,14 +787,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'ordering'
:
'relateds__count'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
]
def
test_ordering_with_nonstandard_ordering_param
(
self
):
with
override_settings
(
REST_FRAMEWORK
=
{
'ORDERING_PARAM'
:
'order'
}):
...
...
@@ -847,14 +807,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'order'
:
'text'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
reload_module
(
filters
)
...
...
@@ -884,14 +841,11 @@ class OrderingFilterTests(TestCase):
view
=
OrderingListView
.
as_view
()
request
=
factory
.
get
(
'/'
,
{
'ordering'
:
'text'
})
response
=
view
(
request
)
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
def
test_ordering_with_improper_configuration
(
self
):
class
OrderingListView
(
generics
.
ListAPIView
):
...
...
@@ -967,14 +921,11 @@ class SensitiveOrderingFilterTests(TestCase):
username_field
=
'username'
# Note: Inverse username ordering correctly applied.
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
3
,
username_field
:
'userC'
},
{
'id'
:
2
,
username_field
:
'userB'
},
{
'id'
:
1
,
username_field
:
'userA'
},
]
)
assert
response
.
data
==
[
{
'id'
:
3
,
username_field
:
'userC'
},
{
'id'
:
2
,
username_field
:
'userB'
},
{
'id'
:
1
,
username_field
:
'userA'
},
]
def
test_cannot_order_by_non_serializer_fields
(
self
):
for
serializer_cls
in
[
...
...
@@ -997,11 +948,8 @@ class SensitiveOrderingFilterTests(TestCase):
username_field
=
'username'
# Note: The passwords are not in order. Default ordering is used.
self
.
assertEqual
(
response
.
data
,
[
{
'id'
:
1
,
username_field
:
'userA'
},
# PassB
{
'id'
:
2
,
username_field
:
'userB'
},
# PassC
{
'id'
:
3
,
username_field
:
'userC'
},
# PassA
]
)
assert
response
.
data
==
[
{
'id'
:
1
,
username_field
:
'userA'
},
# PassB
{
'id'
:
2
,
username_field
:
'userB'
},
# PassC
{
'id'
:
3
,
username_field
:
'userC'
},
# PassA
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment