def test_enum_top_level_err(): schema = {"enum": [1, 2, 3]} struct_code = schema_to_struct_code('Foo', schema, {}) exec(struct_code, globals()) with raises(ValueError) as excinfo: Foo('abc')
def test_enum_top_level(): schema = {"enum": [1, 2, 3]} struct_code = schema_to_struct_code('Foo', schema, {}) exec(struct_code, globals()) foo = Foo(2) assert foo.wrapped == 2
def test_array_top_level_err(): schema = { "type": "array", "items": [{ "type": "integer", "multiplesOf": 5 }, { "type": "number" }] } struct_code = schema_to_struct_code('Foo', schema, {}) exec(struct_code, globals()) with raises(TypeError) as excinfo: Foo(wrapped=123)
def test_boolean_field(): schema = { "type": "object", "b": { "type": "boolean" }, "required": ["b"], "additionalProperties": True } struct_code = schema_to_struct_code('Foo', schema, {}) exec(struct_code, globals()) foo = Foo(b=False) assert foo.b == False
def test_array_no_items_definition(): schema = { "type": "object", "arr": { "type": "array", "uniqueItems": True, }, "required": [], "additionalProperties": False } struct_code = schema_to_struct_code('Duba', schema, {}) exec(struct_code, globals()) duba = Duba(arr=[1, 'sss', None]) assert duba.arr[2] == None
def test_array_top_level_1(): schema = { "type": "array", "items": [{ "type": "integer", "multiplesOf": 5 }, { "type": "number" }] } struct_code = schema_to_struct_code('Foo', schema, {}) exec(struct_code, globals()) foo = Foo([10, 4]) assert foo.wrapped[1] == 4
def test_schema(): definitions_code = schema_definitions_to_code(definitions) exec(definitions_code, globals()) struct_code = schema_to_struct_code('Duba', schema, definitions) exec(struct_code, globals()) duba = Duba(foo={ 'a1': 5, 'a2': 1.5 }, ss=ComplexStruct(simple=SimpleStruct(name='abc')), enum=2, s="xyz", i=10, all=6, a=[10, 3]) assert duba.ss.simple.name == 'abc'