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
8d09f560
Commit
8d09f560
authored
Nov 27, 2013
by
Ian Foote
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add unittests for ChoiceField metadata.
Rename 'name' to 'display_name'.
parent
2484fc91
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
23 additions
and
5 deletions
+23
-5
rest_framework/fields.py
+1
-1
rest_framework/tests/test_fields.py
+22
-4
No files found.
rest_framework/fields.py
View file @
8d09f560
...
@@ -516,7 +516,7 @@ class ChoiceField(WritableField):
...
@@ -516,7 +516,7 @@ class ChoiceField(WritableField):
def
metadata
(
self
):
def
metadata
(
self
):
data
=
super
(
ChoiceField
,
self
)
.
metadata
()
data
=
super
(
ChoiceField
,
self
)
.
metadata
()
data
[
'choices'
]
=
[{
'value'
:
v
,
'name'
:
n
}
for
v
,
n
in
self
.
choices
]
data
[
'choices'
]
=
[{
'value'
:
v
,
'
display_
name'
:
n
}
for
v
,
n
in
self
.
choices
]
return
data
return
data
def
validate
(
self
,
value
):
def
validate
(
self
,
value
):
...
...
rest_framework/tests/test_fields.py
View file @
8d09f560
...
@@ -707,20 +707,21 @@ class ChoiceFieldTests(TestCase):
...
@@ -707,20 +707,21 @@ class ChoiceFieldTests(TestCase):
self
.
assertEqual
(
f
.
choices
,
models
.
fields
.
BLANK_CHOICE_DASH
+
SAMPLE_CHOICES
)
self
.
assertEqual
(
f
.
choices
,
models
.
fields
.
BLANK_CHOICE_DASH
+
SAMPLE_CHOICES
)
def
test_invalid_choice_model
(
self
):
def
test_invalid_choice_model
(
self
):
s
=
ChoiceFieldModelSerializer
(
data
=
{
'choice'
:
'wrong_value'
})
s
=
ChoiceFieldModelSerializer
(
data
=
{
'choice'
:
'wrong_value'
})
self
.
assertFalse
(
s
.
is_valid
())
self
.
assertFalse
(
s
.
is_valid
())
self
.
assertEqual
(
s
.
errors
,
{
'choice'
:
[
'Select a valid choice. wrong_value is not one of the available choices.'
]})
self
.
assertEqual
(
s
.
errors
,
{
'choice'
:
[
'Select a valid choice. wrong_value is not one of the available choices.'
]})
self
.
assertEqual
(
s
.
data
[
'choice'
],
''
)
self
.
assertEqual
(
s
.
data
[
'choice'
],
''
)
def
test_empty_choice_model
(
self
):
def
test_empty_choice_model
(
self
):
"""
"""
Test that the 'empty' value is correctly passed and used depending on the 'null' property on the model field.
Test that the 'empty' value is correctly passed and used depending on
the 'null' property on the model field.
"""
"""
s
=
ChoiceFieldModelSerializer
(
data
=
{
'choice'
:
''
})
s
=
ChoiceFieldModelSerializer
(
data
=
{
'choice'
:
''
})
self
.
assertTrue
(
s
.
is_valid
())
self
.
assertTrue
(
s
.
is_valid
())
self
.
assertEqual
(
s
.
data
[
'choice'
],
''
)
self
.
assertEqual
(
s
.
data
[
'choice'
],
''
)
s
=
ChoiceFieldModelWithNullSerializer
(
data
=
{
'choice'
:
''
})
s
=
ChoiceFieldModelWithNullSerializer
(
data
=
{
'choice'
:
''
})
self
.
assertTrue
(
s
.
is_valid
())
self
.
assertTrue
(
s
.
is_valid
())
self
.
assertEqual
(
s
.
data
[
'choice'
],
None
)
self
.
assertEqual
(
s
.
data
[
'choice'
],
None
)
...
@@ -740,6 +741,23 @@ class ChoiceFieldTests(TestCase):
...
@@ -740,6 +741,23 @@ class ChoiceFieldTests(TestCase):
self
.
assertEqual
(
f
.
from_native
(
''
),
None
)
self
.
assertEqual
(
f
.
from_native
(
''
),
None
)
self
.
assertEqual
(
f
.
from_native
(
None
),
None
)
self
.
assertEqual
(
f
.
from_native
(
None
),
None
)
def
test_metadata_choices
(
self
):
"""
Make sure proper choices are included in the field's metadata.
"""
choices
=
[{
'value'
:
v
,
'display_name'
:
n
}
for
v
,
n
in
SAMPLE_CHOICES
]
f
=
serializers
.
ChoiceField
(
choices
=
SAMPLE_CHOICES
)
self
.
assertEqual
(
f
.
metadata
()[
'choices'
],
choices
)
def
test_metadata_choices_not_required
(
self
):
"""
Make sure proper choices are included in the field's metadata.
"""
choices
=
[{
'value'
:
v
,
'display_name'
:
n
}
for
v
,
n
in
models
.
fields
.
BLANK_CHOICE_DASH
+
SAMPLE_CHOICES
]
f
=
serializers
.
ChoiceField
(
required
=
False
,
choices
=
SAMPLE_CHOICES
)
self
.
assertEqual
(
f
.
metadata
()[
'choices'
],
choices
)
class
EmailFieldTests
(
TestCase
):
class
EmailFieldTests
(
TestCase
):
"""
"""
...
...
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