def test_simple_discriminated_union_valid():
    x = {'type': 'dog', 'name': 'Fido'}
    serializer = create_serializer(Pet)
    assert serializer.load(x) == Dog(name='Fido')

    x = {'type': 'fish', 'color': 4}
    serializer = create_serializer(Pet)
    assert serializer.load(x) == Fish(color=4)
class DatetimeFromIsoformat(datetime):

    _str_serializer = create_serializer(str)

    @classmethod
    def __load__(cls, x: Any) -> datetime:
        x = cls._str_serializer.load(x)
        try:
            return datetime.fromisoformat(x)
        except ValueError as error:
            raise ValidationError(str(error))

    @classmethod
    def __dump__(cls, x: datetime) -> Any:
        return x.isoformat()
def test_list_valid(x, schema):
    serializer = create_serializer(schema)
    loaded = serializer.load(x)

    assert serializer.load(x) == tuple([a for a in x])
    assert serializer.dump(loaded) == [a for a in x]
def test_int_serializer_valid(x):
    serializer = create_serializer(int)
    assert serializer.load(x) == x
    assert serializer.dump(x) == x
def test_serializer_str_invalid(x):
    serializer = create_serializer(str)
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_serializer_str_valid(x):
    serializer = create_serializer(str)
    assert serializer.load(x) == x
    assert serializer.dump(x) == x
def test_from_isoformat_invalid(x):
    serializer = create_serializer(DatetimeFromIsoformat)
    with pytest.raises(ValidationError):
        serializer.load(x)
Example #8
0
def test_person_valid():
    x = {'name': 'toto', 'age': 45}
    expected = Person(name='toto', age=45)
    serializer = create_serializer(Person)
    assert serializer.load(x) == expected
    assert serializer.dump(expected) == x
Example #9
0
def test_list_less_basic_invalid(x, schema):
    serializer = create_serializer(List[schema])
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_none_serializer_valid():
    serializer = create_serializer(None)
    assert serializer.load(None) is None
    assert serializer.dump(None) is None
def test_int_bool_valid(x):
    serializer = create_serializer(Union[int, bool])
    assert serializer.load(x) == x
def test_list_int_tuple_float_invalid(x):
    serializer = create_serializer(Union[List[int], Tuple[float, float]])
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_list_int_tuple_float_valid(x):
    serializer = create_serializer(Union[List[int], Tuple[float, float]])
    assert list(serializer.load(x)) == [a for a in x]
def test_int_bool_invalid(x):
    serializer = create_serializer(Union[int, bool])
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_simple_discriminated_union_invalid(x):
    serializer = create_serializer(Pet)
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_tuple_less_basic_invalid(x, schema):
    serializer = create_serializer(schema)
    with pytest.raises(ValidationError):
        serializer.load(x)
Example #17
0
def test_list_valid(x, schema):
    serializer = create_serializer(List[schema])
    loaded = serializer.load(x)

    assert serializer.load(x) == [a for a in x]
    assert serializer.dump(loaded) == loaded
def test_none_serializer_invalid(x):
    serializer = create_serializer(None)
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_bool_serializer_valid(x):
    serializer = create_serializer(bool)
    assert serializer.load(x) == x
    assert serializer.dump(x) == x
def test_bool_serializer_invalid(x):
    serializer = create_serializer(bool)
    with pytest.raises(ValidationError):
        serializer.load(x)
Example #21
0
def test_person_invalid(x):
    serializer = create_serializer(Person)
    with pytest.raises(ValidationError):
        serializer.load(x)
def test_from_isoformat_valid(x):
    serializer = create_serializer(DatetimeFromIsoformat)
    loaded = serializer.load(x)
    assert loaded == datetime.fromisoformat(x)
    assert serializer.dump(loaded) == x