Пример #1
0
    def test_validate_json_field(self):
        settings = new_serializer_class(
            stay_logged_in=serializers.BooleanField(default=True), )

        credentials = new_serializer_class(
            username=serializers.StringField(required=True,
                                             blank=False,
                                             nullable=False),
            password=serializers.StringField(required=True,
                                             blank=False,
                                             nullable=False),
            settings=serializers.JSONField(validator=settings,
                                           default={},
                                           nullable=True),
        )

        serializer = new_serializer_class(
            credentials=serializers.SerializerField(credentials,
                                                    required=True), )

        obj = serializer.save(
            data={'credentials': {
                'username': '******',
                'password': '******',
            }})

        self.assertEqual(obj.credentials.username, 'synic')
        self.assertEqual(obj.credentials.password, 'test')
        self.assertTrue(obj.credentials.settings['stay_logged_in'])
Пример #2
0
class DummySerializer(serializers.ModelSerializer):
    uuid = serializers.UUIDField(default=uuid.uuid4)
    name = serializers.StringField(required=True)
    email = serializers.EmailField(required=True)
    title = serializers.StringField(max_length=1000)
    is_awesome = serializers.BooleanField(required=False, default=True)

    class Meta:
        model = Dummy
Пример #3
0
class UserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(required=True)
    description = serializers.StringField(required=False, nullable=True)

    class Meta:
        required = ('username', 'email')
        model = User
Пример #4
0
    def test_validate_nullable(self):
        serializer = new_serializer_class(name=serializers.StringField(
            required=True, nullable=True), )

        obj = serializer.save(data={'name': None})

        self.assertIsNone(obj.name)
Пример #5
0
    def test_validate_is_string(self):
        serializer = new_serializer_class(
            name=serializers.StringField(max_length=4), )

        with self.assertRaises(exceptions.ValidationError) as context:
            serializer.validate(data={'name': 12})

        self.assertIn('Must be a string',
                      context.exception.description['name'][0])
Пример #6
0
    def test_string_field_min_length(self):
        serializer = new_serializer_class(
            name=serializers.StringField(min_length=3), )

        with self.assertRaises(exceptions.ValidationError) as context:
            serializer.validate(data={'name': '12'})

        self.assertEqual(context.exception.description['name'][0],
                         'Must be at least 3 character(s) long.')
Пример #7
0
    def test_validation_order(self):
        serializer = new_serializer_class(name=serializers.StringField(
            min_length=4, max_length=2, blank=False, regex='\d\d'), )

        with self.assertRaises(exceptions.ValidationError) as context:
            serializer.validate(data={'name': ''})

        matches = ('Cannot be blank', 'be at least 4', 'match the pattern')
        for i, match in enumerate(matches):
            self.assertIn(match, context.exception.description['name'][i])
Пример #8
0
    def test_fail_string_field_match_regex(self):
        serializer = new_serializer_class(
            name=serializers.StringField(regex='\d\d'), )

        with self.assertRaises(exceptions.ValidationError) as context:
            serializer.validate(data={'name': ''})

        self.assertIn(
            'match the pattern',
            context.exception.description['name'][0],
        )
Пример #9
0
class UserSerializer2(serializers.ModelSerializer):
    user_age = serializers.IntField(source='age', required=False)
    description = serializers.StringField(required=False, nullable=True)

    class Meta:
        fields = (
            'uuid',
            'username',
            'email',
            'first_name',
            'last_name',
            'created_at',
            'updated_at',
            'user_age',
        )
        model = User
Пример #10
0
class DummySerializer(serializers.Serializer):
    name = serializers.StringField(required=True)
    email = serializers.EmailField(required=True, update_read_only=True)
    title = serializers.StringField(max_length=30)
    is_awesome = serializers.BooleanField(required=False, default=True)
Пример #11
0
    def test_string_field_match_regex(self):
        serializer = new_serializer_class(
            name=serializers.StringField(regex='\d\d'), )

        serializer.validate(data={'name': '22'})