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
a1546cc2
Commit
a1546cc2
authored
Aug 17, 2017
by
Woile
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[NEW] Tests for templatetags.schema_links
parent
11bc1fe2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
315 additions
and
2 deletions
+315
-2
rest_framework/templatetags/rest_framework.py
+1
-1
tests/test_templatetags.py
+314
-1
No files found.
rest_framework/templatetags/rest_framework.py
View file @
a1546cc2
...
...
@@ -249,7 +249,7 @@ def schema_links(section, sec_key=None):
"""
Recursively find every link in a schema, even nested.
"""
NESTED_FORMAT
=
'
%
s >
%
s'
NESTED_FORMAT
=
'
%
s >
%
s'
# this format is used in docs/js/api.js:normalizeKeys
links
=
section
.
links
if
section
.
data
:
data
=
section
.
data
.
items
()
...
...
tests/test_templatetags.py
View file @
a1546cc2
# encoding: utf-8
from
__future__
import
unicode_literals
import
unittest
from
django.test
import
TestCase
from
rest_framework.compat
import
coreapi
,
coreschema
from
rest_framework.relations
import
Hyperlink
from
rest_framework.templatetags
import
rest_framework
from
rest_framework.templatetags.rest_framework
import
(
add_nested_class
,
add_query_param
,
as_string
,
break_long_headers
,
format_value
,
get_pagination_html
,
urlize_quoted_links
format_value
,
get_pagination_html
,
schema_links
,
urlize_quoted_links
)
from
rest_framework.test
import
APIRequestFactory
...
...
@@ -300,3 +303,313 @@ class URLizerTests(TestCase):
data
[
'"foo_set": [
\n
"http://api/foos/1/"
\n
], '
]
=
\
'"foo_set": [
\n
"<a href="http://api/foos/1/">http://api/foos/1/</a>"
\n
], '
self
.
_urlize_dict_check
(
data
)
@unittest.skipUnless
(
coreapi
,
'coreapi is not installed'
)
class
SchemaLinksTests
(
TestCase
):
def
test_schema_with_empty_links
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'users'
:
{
'list'
:
{}
}
}
)
section
=
schema
[
'users'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
0
def
test_single_action
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'users'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'get'
,
fields
=
[]
)
}
}
)
section
=
schema
[
'users'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
1
assert
'list'
in
flat_links
def
test_default_actions
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'users'
:
{
'create'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'post'
,
fields
=
[]
),
'list'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'get'
,
fields
=
[]
),
'read'
:
coreapi
.
Link
(
url
=
'/users/{id}/'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'update'
:
coreapi
.
Link
(
url
=
'/users/{id}/'
,
action
=
'patch'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
}
}
)
section
=
schema
[
'users'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
4
assert
'list'
in
flat_links
assert
'create'
in
flat_links
assert
'read'
in
flat_links
assert
'update'
in
flat_links
def
test_default_actions_and_single_custom_action
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'users'
:
{
'create'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'post'
,
fields
=
[]
),
'list'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'get'
,
fields
=
[]
),
'read'
:
coreapi
.
Link
(
url
=
'/users/{id}/'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'update'
:
coreapi
.
Link
(
url
=
'/users/{id}/'
,
action
=
'patch'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'friends'
:
coreapi
.
Link
(
url
=
'/users/{id}/friends'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
}
}
)
section
=
schema
[
'users'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
5
assert
'list'
in
flat_links
assert
'create'
in
flat_links
assert
'read'
in
flat_links
assert
'update'
in
flat_links
assert
'friends'
in
flat_links
def
test_default_actions_and_single_custom_action_two_methods
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'users'
:
{
'create'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'post'
,
fields
=
[]
),
'list'
:
coreapi
.
Link
(
url
=
'/users/'
,
action
=
'get'
,
fields
=
[]
),
'read'
:
coreapi
.
Link
(
url
=
'/users/{id}/'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'update'
:
coreapi
.
Link
(
url
=
'/users/{id}/'
,
action
=
'patch'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'friends'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/users/{id}/friends'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'create'
:
coreapi
.
Link
(
url
=
'/users/{id}/friends'
,
action
=
'post'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
}
}
}
)
section
=
schema
[
'users'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
6
assert
'list'
in
flat_links
assert
'create'
in
flat_links
assert
'read'
in
flat_links
assert
'update'
in
flat_links
assert
'friends > list'
in
flat_links
assert
'friends > create'
in
flat_links
def
test_multiple_nested_routes
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'animals'
:
{
'dog'
:
{
'vet'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/animals/dog/{id}/vet'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
},
'read'
:
coreapi
.
Link
(
url
=
'/animals/dog/{id}'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
},
'cat'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/animals/cat/'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'create'
:
coreapi
.
Link
(
url
=
'/aniamls/cat'
,
action
=
'post'
,
fields
=
[]
)
}
}
}
)
section
=
schema
[
'animals'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
4
assert
'cat > create'
in
flat_links
assert
'cat > list'
in
flat_links
assert
'dog > read'
in
flat_links
assert
'dog > vet > list'
in
flat_links
def
test_multiple_resources_with_multiple_nested_routes
(
self
):
schema
=
coreapi
.
Document
(
url
=
''
,
title
=
'Example API'
,
content
=
{
'animals'
:
{
'dog'
:
{
'vet'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/animals/dog/{id}/vet'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
},
'read'
:
coreapi
.
Link
(
url
=
'/animals/dog/{id}'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
},
'cat'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/animals/cat/'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
),
'create'
:
coreapi
.
Link
(
url
=
'/aniamls/cat'
,
action
=
'post'
,
fields
=
[]
)
}
},
'farmers'
:
{
'silo'
:
{
'soy'
:
{
'list'
:
coreapi
.
Link
(
url
=
'/farmers/silo/{id}/soy'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
},
'list'
:
coreapi
.
Link
(
url
=
'/farmers/silo'
,
action
=
'get'
,
fields
=
[
coreapi
.
Field
(
'id'
,
required
=
True
,
location
=
'path'
,
schema
=
coreschema
.
String
())
]
)
}
}
}
)
section
=
schema
[
'animals'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
4
assert
'cat > create'
in
flat_links
assert
'cat > list'
in
flat_links
assert
'dog > read'
in
flat_links
assert
'dog > vet > list'
in
flat_links
section
=
schema
[
'farmers'
]
flat_links
=
schema_links
(
section
)
assert
len
(
flat_links
)
is
2
assert
'silo > list'
in
flat_links
assert
'silo > soy > list'
in
flat_links
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