def test_validation_strings(): a_field = field('a', validators=[validators.required(), validators.string()]) f_field = field('f', validators=[validators.required()]) g_field = field('g') a_serializer = serializer( a_field, f_field, g_field, ) from_json = { 'a': 1, 'f': [], } try: a_serializer.deserialize(from_json) except Exception as e: assert hasattr(e, 'errors') assert e.errors == { 'f': ['This field is required'], }
def test_validation_strings(): a_field = field('a', validators=[validators.required(), validators.string()]) f_field = field('f', validators=[validators.required()]) g_field = field('g') a_serializer = serializer( a_field, f_field, g_field, ) from_json = { 'a': 1, 'f': [], } with pytest.raises(ValidationException) as exc_info: a_serializer.deserialize(from_json) assert hasattr(exc_info.value, 'errors') assert exc_info.value.errors == { 'f': ['This field is required'], }
def test_docs(): artist_serializer = serializer( field('name', validators=[validators.required()])) album_schema = serializer( field('title', validators=[validators.required()]), field('release_date', validators=[validators.required(), validators.datetime()], formatters=[formatters.format_datetime()]), child('artist', serializer=artist_serializer, validators=[validators.required()])) class Artist(object): def __init__(self, name): self.name = name class Album(object): def __init__(self, title, release_date, artist): self.title = title self.release_date = release_date self.artist = artist bowie = Artist(name='David Bowie') album = Album(artist=bowie, title='Hunky Dory', release_date=datetime.datetime(1971, 12, 17)) assert album_schema.serialize(album) == { 'artist': { 'name': 'David Bowie' }, 'release_date': '1971-12-17T00:00:00', 'title': 'Hunky Dory' } assert album_schema.deserialize(album_schema.serialize(album)) == { 'artist': { 'name': 'David Bowie' }, 'release_date': datetime.datetime(1971, 12, 17, 0, 0, tzinfo=iso8601.UTC), 'title': 'Hunky Dory' } input = album_schema.serialize(album) del input['artist'] errors = None try: album_schema.deserialize(input) except Exception as e: errors = e.errors assert errors == {'artist': ['This field is required']}
def test_nested_required(): child_serializer = serializer( field('c1', validators=[validators.required()]) ) a_serializer = serializer( field('a'), many('c', serializer=child_serializer, validators=[validators.required()]) ) reference = { 'a': 1, } with pytest.raises(ValidationException): a_serializer.deserialize(reference) reference = { 'a': 1, 'c': [], } errors = None try: a_serializer.deserialize(reference) except ValidationException as e: errors = e.errors assert errors == {'c': {'_full_errors': ['This field is required']}} reference = { 'a': 1, 'c': [{}], } errors = None try: a_serializer.deserialize(reference) except ValidationException as e: errors = e.errors assert errors == {'c': {0: {'c1': ['This field is required']}}}
def test_required(): validator = validators.required() assert '1' == validator('1') with pytest.raises(ValidationException): validator(None) with pytest.raises(ValidationException): validator('') assert validator(0) == 0
def test_required(): validator = validators.required() assert '1' == validator('1') with pytest.raises(ValidationException): validator(None) with pytest.raises(ValidationException): validator('') assert validator(False) is False for zero in [0, 0.0, 0j]: assert validator(zero) == zero