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
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
68 additions
and
120 deletions
+68
-120
tests/test_filters.py
+68
-120
No files found.
tests/test_filters.py
View file @
9f4c9691
...
@@ -155,8 +155,8 @@ class IntegrationTestFiltering(CommonFilteringTestCase):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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'
:
1
,
'title'
:
'z'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
{
'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):
...
@@ -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):
...
@@ -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):
...
@@ -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):
...
@@ -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'
:
1
,
'title'
:
'z'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
{
'id'
:
2
,
'title'
:
'zz'
,
'text'
:
'bcd'
}
]
]
)
reload_module
(
filters
)
reload_module
(
filters
)
...
@@ -528,15 +513,13 @@ class SearchFilterFkTests(TestCase):
...
@@ -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
(
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
):
def
test_must_call_distinct_restores_meta_for_each_field
(
self
):
...
@@ -545,10 +528,9 @@ class SearchFilterFkTests(TestCase):
...
@@ -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):
...
@@ -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
(
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):
...
@@ -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'
:
3
,
'date'
:
'2014-10-08'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'date'
:
'2013-10-08'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'date'
:
'2013-10-08'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'date'
:
'2012-10-08'
,
'text'
:
'abc'
}
{
'id'
:
1
,
'date'
:
'2012-10-08'
,
'text'
:
'abc'
}
]
]
)
class
OrderingFilterTests
(
TestCase
):
class
OrderingFilterTests
(
TestCase
):
...
@@ -713,14 +691,11 @@ 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'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'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):
...
@@ -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'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'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):
...
@@ -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'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'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):
...
@@ -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'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'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):
...
@@ -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'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'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):
...
@@ -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'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'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):
...
@@ -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'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
]
]
)
reload_module
(
filters
)
reload_module
(
filters
)
...
@@ -884,14 +841,11 @@ class OrderingFilterTests(TestCase):
...
@@ -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'
:
1
,
'title'
:
'zyx'
,
'text'
:
'abc'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
2
,
'title'
:
'yxw'
,
'text'
:
'bcd'
},
{
'id'
:
3
,
'title'
:
'xwv'
,
'text'
:
'cde'
},
{
'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):
...
@@ -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'
:
3
,
username_field
:
'userC'
},
{
'id'
:
2
,
username_field
:
'userB'
},
{
'id'
:
2
,
username_field
:
'userB'
},
{
'id'
:
1
,
username_field
:
'userA'
},
{
'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):
...
@@ -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'
:
1
,
username_field
:
'userA'
},
# PassB
{
'id'
:
2
,
username_field
:
'userB'
},
# PassC
{
'id'
:
2
,
username_field
:
'userB'
},
# PassC
{
'id'
:
3
,
username_field
:
'userC'
},
# PassA
{
'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