diff options
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 | 
