diff options
| author | Tom Christie | 2014-10-28 16:21:49 +0000 |
|---|---|---|
| committer | Tom Christie | 2014-10-28 16:21:49 +0000 |
| commit | 9ebaabd6eb31e18cf0bb1c70893f719f18ecb0f9 (patch) | |
| tree | b3718c7e155e3d3c97666ce2cfd832e0a8381de0 /tests | |
| parent | 702f47700de2c10f26f06b23099740c408ffe797 (diff) | |
| download | django-rest-framework-9ebaabd6eb31e18cf0bb1c70893f719f18ecb0f9.tar.bz2 | |
unique_for_date/unique_for_month/unique_for_year
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_fields.py | 27 | ||||
| -rw-r--r-- | tests/test_validators.py | 39 |
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 |
