コード例 #1
0
def test_nested_map_errors():
    data = {"name": 1000, "amount": {"amount": 1000, "currency": 1000}}

    validator = b.schema({
        "c":
        b.Type(str),
        "amount":
        b.Map({
            "amount": b.Type(str),
            "currency": b.Type(str)
        })
    })

    with pytest.raises(SchemaErrors) as exc:
        validator.validate(data)

    expected = {
        'c': 'Field `c` is required.',
        'amount': {
            'amount': "Not of type `<class 'str'>`",
            'currency': "Not of type `<class 'str'>`"
        }
    }
    assert expected == exc.value.errors
コード例 #2
0
def test_schema_as_map_optional_fields():
    validator = b.Map({"name": b.Type(str), b.Optional("age"): b.Type(int)})
    assert validator.required == {"name"}

    validator = b.Map({})
    assert validator.validate({"name": "John", "age": 25}) == {}

    validator = b.Map({"name": b.Type(str), b.Optional("age"): b.Type(int)})
    assert validator.validate({"name": "John"}) == {"name": "John"}

    validator = b.Map({"name": b.Type(str), b.Optional("age"): b.Type(int)})
    assert validator.validate({
        "name": "John",
        "whatever": True
    }) == {
        "name": "John"
    }

    validator = b.Map({"name": b.Type(str), b.Optional("age"): b.Type(int)})
    with pytest.raises(SchemaErrors):
        validator.validate({"name": "John", "age": 1.2})
コード例 #3
0
def test_schema_logic_or():
    assert b.Or(b.Type(str),
                b.Predicate(lambda n: n == 42)).validate("20") == "20"
    assert b.Or(b.Type(str), b.Predicate(lambda n: n == 42)).validate(42) == 42
    with pytest.raises(SchemaError):
        b.Or(b.Type(str), b.Predicate(lambda n: n == 42)).validate(20)
コード例 #4
0
def test_schema_as_type():
    assert b.Type(object).validate("hai") == "hai"
    assert b.Type(int).validate(123) == 123
    with pytest.raises(SchemaError):
        b.Type(int).validate("123")