Пример #1
0
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'],
        }
Пример #2
0
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'],
    }
Пример #3
0
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']}
Пример #4
0
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']}}}
Пример #5
0
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
Пример #6
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