예제 #1
0
    def test_should_serialize_with_default_serializer(self):
        field = SchemaField(of_type=self.test_schema_cls)

        serialized_dict = field.serialize(
            request_factory.get_request(),
            self.test_entity_cls('John', 'Smith'))

        assert_that(serialized_dict['name'], equal_to('John'))
예제 #2
0
    def test_should_validate(self):
        field = SchemaField(self.test_schema_cls)
        request = request_factory.get_request(context_params={"crud_action": CrudActions.UPDATE_DETAIL})
        result = field.validate(request, {"name": 1})

        assert_that(result, instance_of(ValidationResult))
        assert_that(result.is_success, equal_to(False))
        assert_that(result.reason, has_entry("name", "Expected type string"))
예제 #3
0
    def test_should_validate(self):
        field = SchemaField(self.test_schema_cls)
        request = request_factory.get_request(
            context_params={'crud_action': CrudActions.UPDATE_DETAIL})
        result = field.validate(request, {'name': 1})

        assert_that(result, instance_of(ValidationResult))
        assert_that(result.is_success, equal_to(False))
        assert_that(result.reason, has_entry('name', 'Expected type string'))
예제 #4
0
    def test_should_serialize_with_overridden_serializer(self):
        test_schema_cls = self.test_schema_cls
        request = request_factory.get_request(context_params={"crud_action": CrudActions.UPDATE_DETAIL})

        class TestSerializer(DefaultEntitySerializer):
            def serialize_entity(self, request, entity):
                return {"name": entity.surname}

        field = SchemaField(of_type=self.test_schema_cls, serializer_cls=TestSerializer)

        response_dict = field.serialize(request, self.test_entity_cls("John", "Smith"))

        assert_that(response_dict["name"], equal_to("Smith"))
예제 #5
0
    def test_should_validate_with_overridden_validator(self):
        class TestValidator(DefaultSchemaValidation):
            def __init__(self, schema_cls):
                super(TestValidator, self).__init__(schema_cls)

            def validate_data(self, data, fields_to_validate=None):
                return {"name": "Custom Validation Failed"}

        field = SchemaField(of_type=self.test_schema_cls, validator_cls=TestValidator)

        result = field.validate(None, {"name": 1})

        assert_that(result, instance_of(ValidationResult))
        assert_that(result.is_success, equal_to(False))
        assert_that(result.reason, has_entry("name", "Custom Validation Failed"))
예제 #6
0
    def test_should_serialize_with_overridden_serializer(self):
        test_schema_cls = self.test_schema_cls
        request = request_factory.get_request(
            context_params={'crud_action': CrudActions.UPDATE_DETAIL})

        class TestSerializer(DefaultEntitySerializer):
            def serialize_entity(self, request, entity):
                return {'name': entity.surname}

        field = SchemaField(of_type=self.test_schema_cls,
                            serializer_cls=TestSerializer)

        response_dict = field.serialize(request,
                                        self.test_entity_cls('John', 'Smith'))

        assert_that(response_dict['name'], equal_to('Smith'))
예제 #7
0
    def test_should_validate_with_overridden_validator(self):
        class TestValidator(DefaultSchemaValidation):
            def __init__(self, schema_cls):
                super(TestValidator, self).__init__(schema_cls)

            def validate_data(self, data, fields_to_validate=None):
                return {'name': 'Custom Validation Failed'}

        field = SchemaField(of_type=self.test_schema_cls,
                            validator_cls=TestValidator)

        result = field.validate(None, {'name': 1})

        assert_that(result, instance_of(ValidationResult))
        assert_that(result.is_success, equal_to(False))
        assert_that(result.reason, has_entry('name',
                                             'Custom Validation Failed'))
        class TestSchema(ApiSchema):
            name = StringField(max_length=5, required=True)
            is_active = BooleanField(required=True)
            country = StringField(required=False, max_length=5)
            related = SchemaField(of_type=self.RelatedSchema)

            class Meta:
                schema_name = 'asdf'
예제 #9
0
class PersonSchema(ApiSchema):
    name = StringField(max_length=100, required=True, nullable=False)
    email = EmailField(max_length=100, nullable=True)
    phone = StringField(max_length=10, field_type=FieldTypes.READONLY)
    address = SchemaField(of_type=AddressSchema, nullable=True)
    company = SubResourceField(resource_cls=CompanyResource,
                               entity_attribute='name',
                               related_filter='person_name',
                               show_in_list=False)
    friends = ListSubResourceField(resource_cls=FriendResource,
                                   entity_attribute='name',
                                   related_filter='friend_name',
                                   show_in_list=False)
    nick_names = ListField(field=StringField())

    class Meta:
        schema_name = 'persons'
예제 #10
0
    def test_should_serialize_with_default_serializer(self):
        field = SchemaField(of_type=self.test_schema_cls)

        serialized_dict = field.serialize(request_factory.get_request(), self.test_entity_cls("John", "Smith"))

        assert_that(serialized_dict["name"], equal_to("John"))