aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/test_serializer.py
diff options
context:
space:
mode:
authorTom Christie2014-03-04 15:26:34 +0000
committerTom Christie2014-03-04 15:26:34 +0000
commit4edd39b2e4a6490e7eac17dd989418f745d8efc3 (patch)
treeed2fb9171bd9283d3314364caa0d005b08f6f4e2 /rest_framework/tests/test_serializer.py
parent24a688223240eb1e71db3c0f00cd621e80cb9fb2 (diff)
parentdea2766abac5ef55fa226f413711cfd49af2a745 (diff)
downloaddjango-rest-framework-4edd39b2e4a6490e7eac17dd989418f745d8efc3.tar.bz2
Merge pull request #1442 from Anton-Shutik/master
RelatedField default value handling fixed
Diffstat (limited to 'rest_framework/tests/test_serializer.py')
-rw-r--r--rest_framework/tests/test_serializer.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/rest_framework/tests/test_serializer.py b/rest_framework/tests/test_serializer.py
index 47082190..198c269f 100644
--- a/rest_framework/tests/test_serializer.py
+++ b/rest_framework/tests/test_serializer.py
@@ -900,6 +900,58 @@ class DefaultValueTests(TestCase):
self.assertEqual(instance.text, 'overridden')
+class WritableFieldDefaultValueTests(TestCase):
+
+ def setUp(self):
+ self.expected = {'default': 'value'}
+ self.create_field = fields.WritableField
+
+ def test_get_default_value_with_noncallable(self):
+ field = self.create_field(default=self.expected)
+ got = field.get_default_value()
+ self.assertEqual(got, self.expected)
+
+ def test_get_default_value_with_callable(self):
+ field = self.create_field(default=lambda : self.expected)
+ got = field.get_default_value()
+ self.assertEqual(got, self.expected)
+
+ def test_get_default_value_when_not_required(self):
+ field = self.create_field(default=self.expected, required=False)
+ got = field.get_default_value()
+ self.assertEqual(got, self.expected)
+
+ def test_get_default_value_returns_None(self):
+ field = self.create_field()
+ got = field.get_default_value()
+ self.assertIsNone(got)
+
+ def test_get_default_value_returns_non_True_values(self):
+ values = [None, '', False, 0, [], (), {}] # values that assumed as 'False' in the 'if' clause
+ for expected in values:
+ field = self.create_field(default=expected)
+ got = field.get_default_value()
+ self.assertEqual(got, expected)
+
+
+class RelatedFieldDefaultValueTests(WritableFieldDefaultValueTests):
+
+ def setUp(self):
+ self.expected = {'foo': 'bar'}
+ self.create_field = relations.RelatedField
+
+ def test_get_default_value_returns_empty_list(self):
+ field = self.create_field(many=True)
+ got = field.get_default_value()
+ self.assertListEqual(got, [])
+
+ def test_get_default_value_returns_expected(self):
+ expected = [1, 2, 3]
+ field = self.create_field(many=True, default=expected)
+ got = field.get_default_value()
+ self.assertListEqual(got, expected)
+
+
class CallableDefaultValueTests(TestCase):
def setUp(self):
class CallableDefaultValueSerializer(serializers.ModelSerializer):