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'))
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"))
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'))
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"))
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"))
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'))
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'
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'
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"))