aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTom Christie2014-10-28 16:21:49 +0000
committerTom Christie2014-10-28 16:21:49 +0000
commit9ebaabd6eb31e18cf0bb1c70893f719f18ecb0f9 (patch)
treeb3718c7e155e3d3c97666ce2cfd832e0a8381de0 /tests
parent702f47700de2c10f26f06b23099740c408ffe797 (diff)
downloaddjango-rest-framework-9ebaabd6eb31e18cf0bb1c70893f719f18ecb0f9.tar.bz2
unique_for_date/unique_for_month/unique_for_year
Diffstat (limited to 'tests')
-rw-r--r--tests/test_fields.py27
-rw-r--r--tests/test_validators.py39
2 files changed, 65 insertions, 1 deletions
diff --git a/tests/test_fields.py b/tests/test_fields.py
index 6dc5f87d..3e102ab5 100644
--- a/tests/test_fields.py
+++ b/tests/test_fields.py
@@ -215,6 +215,33 @@ class TestBooleanHTMLInput:
assert serializer.validated_data == {'archived': False}
+class TestCreateOnlyDefault:
+ def setup(self):
+ default = serializers.CreateOnlyDefault('2001-01-01')
+
+ class TestSerializer(serializers.Serializer):
+ published = serializers.HiddenField(default=default)
+ text = serializers.CharField()
+ self.Serializer = TestSerializer
+
+ def test_create_only_default_is_provided(self):
+ serializer = self.Serializer(data={'text': 'example'})
+ assert serializer.is_valid()
+ assert serializer.validated_data == {
+ 'text': 'example', 'published': '2001-01-01'
+ }
+
+ def test_create_only_default_is_not_provided_on_update(self):
+ instance = {
+ 'text': 'example', 'published': '2001-01-01'
+ }
+ serializer = self.Serializer(instance, data={'text': 'example'})
+ assert serializer.is_valid()
+ assert serializer.validated_data == {
+ 'text': 'example',
+ }
+
+
# Tests for field input and output values.
# ----------------------------------------
diff --git a/tests/test_validators.py b/tests/test_validators.py
index 5adb7678..6cc52c83 100644
--- a/tests/test_validators.py
+++ b/tests/test_validators.py
@@ -176,7 +176,7 @@ class TestUniquenessForDateValidation(TestCase):
UniqueForDateSerializer(validators=[<UniqueForDateValidator(queryset=UniqueForDateModel.objects.all(), field='slug', date_field='published')>]):
id = IntegerField(label='ID', read_only=True)
slug = CharField(max_length=100)
- published = DateField()
+ published = DateField(required=True)
""")
assert repr(serializer) == expected
@@ -215,3 +215,40 @@ class TestUniquenessForDateValidation(TestCase):
'slug': 'existing',
'published': datetime.date(2000, 1, 1)
}
+
+
+class HiddenFieldUniqueForDateModel(models.Model):
+ slug = models.CharField(max_length=100, unique_for_date='published')
+ published = models.DateTimeField(auto_now_add=True)
+
+
+class TestHiddenFieldUniquenessForDateValidation(TestCase):
+ def test_repr_date_field_not_included(self):
+ class TestSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = HiddenFieldUniqueForDateModel
+ fields = ('id', 'slug')
+
+ serializer = TestSerializer()
+ expected = dedent("""
+ TestSerializer(validators=[<UniqueForDateValidator(queryset=HiddenFieldUniqueForDateModel.objects.all(), field='slug', date_field='published')>]):
+ id = IntegerField(label='ID', read_only=True)
+ slug = CharField(max_length=100)
+ published = HiddenField(default=CreateOnlyDefault(<function now>))
+ """)
+ assert repr(serializer) == expected
+
+ def test_repr_date_field_included(self):
+ class TestSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = HiddenFieldUniqueForDateModel
+ fields = ('id', 'slug', 'published')
+
+ serializer = TestSerializer()
+ expected = dedent("""
+ TestSerializer(validators=[<UniqueForDateValidator(queryset=HiddenFieldUniqueForDateModel.objects.all(), field='slug', date_field='published')>]):
+ id = IntegerField(label='ID', read_only=True)
+ slug = CharField(max_length=100)
+ published = DateTimeField(default=CreateOnlyDefault(<function now>), read_only=True)
+ """)
+ assert repr(serializer) == expected