1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
from dataclasses import dataclass, field
import pytest
from apischema import ValidationError, deserialize
from apischema.metadata import validators
def check_no_duplicate_digits(n: int):
if len(str(n)) != len(set(str(n))):
raise ValidationError("number has duplicate digits")
@dataclass
class Foo:
bar: str = field(metadata=validators(check_no_duplicate_digits))
with pytest.raises(ValidationError) as err:
deserialize(Foo, {"bar": "11"})
assert err.value.errors == [{"loc": ["bar"], "err": "number has duplicate digits"}]
|