def test_json_schema_or_merge_type(): s = Or(str, Or(int, dict)) assert s.json_schema() == {'anyOf': [ {'type': 'integer'}, {'type': 'object'}, {'type': 'string'} ]} assert s.json_schema(target='json_schema') == {'type': [ 'integer', 'object', 'string' ]}
def test_json_schema_or_merge_bool_null(): s = Or(None, bool) assert s.json_schema() == {'enum': [True, False, None]} assert s.json_schema(target='openapi') == {'type': 'boolean', 'nullable': True} s = Or(0, 1, 2, 3, bool) assert s.json_schema() == {'enum': [0, 1, 2, 3, True, False]} assert s.json_schema(target='openapi') == {'enum': [0, 1, 2, 3, True, False]} s = Or(None) assert s.json_schema(target='openapi') == {'enum': [None]}
def test_json_schema_or_merge_or(): s = Or( Or( Or( Schema(None, json_schema={'a': 'b'}), Schema(None, json_schema={'c': 'd'}), ), Schema(None, json_schema={'e': 'f'}) ) ) assert s.json_schema() == {'anyOf': [{'a': 'b'}, {'c': 'd'}, {'e': 'f'}]}
def test_json_schema_or_simplify(): s = Or('test') assert s.json_schema() == {'enum': ['test']}
def test_json_schema_or_merge_const(): s = Or(1, Or(2, 3), 4) assert s.json_schema() == {'enum': [1, 2, 3, 4]} assert s.json_schema(target='json_schema') == {'enum': [1, 2, 3, 4]}