def test_array_field(): s_f = StringField() n_f = NumberField() field = ArrayField(Var({ 'role_1': s_f, 'role_2': n_f, })) schema = field.get_schema(role='role_1') assert schema['items'] == s_f.get_schema() schema = field.get_schema(role='role_2') assert schema['items'] == n_f.get_schema() schema = field.get_schema() assert 'items' not in schema _ = lambda value: Var({'role_1': value}) field = ArrayField(s_f, min_items=_(1), max_items=_(2), unique_items=_(True), additional_items=_(True)) assert field.get_schema() == { 'type': 'array', 'items': s_f.get_schema(), } assert field.get_schema(role='role_1') == { 'type': 'array', 'items': s_f.get_schema(), 'minItems': 1, 'maxItems': 2, 'uniqueItems': True, 'additionalItems': True, }
def test_keyword_of_fields(keyword, field_cls): s_f = StringField() n_f = NumberField() i_f = IntField() field = field_cls([n_f, Var({'role_1': s_f}), Var({'role_2': i_f})]) assert field.get_schema() == {keyword: [n_f.get_schema()]} assert field.get_schema(role='role_1') == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert field.get_schema(role='role_2') == { keyword: [n_f.get_schema(), i_f.get_schema()] } field = field_cls( Var( { 'role_1': [n_f, Var({'role_1': s_f}), Var({'role_2': i_f})], 'role_2': [Var({'role_2': i_f})], }, propagate='role_1')) assert field.get_schema() == {keyword: []} assert field.get_schema(role='role_1') == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert field.get_schema(role='role_2') == {keyword: []}
def test_array_field(): s_f = StringField() n_f = NumberField() field = ArrayField(Var({ 'role_1': s_f, 'role_2': n_f, })) schema = field.get_schema(role='role_1') assert schema['items'] == s_f.get_schema() schema = field.get_schema(role='role_2') assert schema['items'] == n_f.get_schema() schema = field.get_schema() assert 'items' not in schema _ = lambda value: Var({'role_1': value}) field = ArrayField(s_f, min_items=_(1), max_items=_(2), unique_items=_(True), additional_items=_(True)) assert field.get_schema() == { 'type': 'array', 'items': s_f.get_schema(), } assert field.get_schema(role='role_1') == { 'type': 'array', 'items': s_f.get_schema(), 'minItems': 1, 'maxItems': 2, 'uniqueItems': True, 'additionalItems': True, }
def test_keyword_of_fields(keyword, field_cls): s_f = StringField() n_f = NumberField() i_f = IntField() field = field_cls([n_f, Var({'role_1': s_f}), Var({'role_2': i_f})]) assert s(field.get_schema()) == {keyword: [n_f.get_schema()]} assert s(field.get_schema(role='role_1')) == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert s(field.get_schema(role='role_2')) == { keyword: [n_f.get_schema(), i_f.get_schema()] } field = field_cls( Var( { 'role_1': [n_f, Var({'role_1': s_f}), Var({'role_2': i_f})], 'role_2': [Var({'role_2': i_f})], }, propagate='role_1')) assert s(field.get_schema(role='role_1')) == { keyword: [n_f.get_schema(), s_f.get_schema()] } with pytest.raises(SchemaGenerationException): field.get_schema(role='role_2')
def test_keyword_of_fields(keyword, field_cls): s_f = StringField() n_f = NumberField() i_f = IntField() field = field_cls([n_f, Var(role_1=s_f), Var(role_2=i_f)]) assert field.get_schema() == { keyword: [n_f.get_schema()] } assert field.get_schema(role='role_1') == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert field.get_schema(role='role_2') == { keyword: [n_f.get_schema(), i_f.get_schema()] } field = field_cls(Var( role_1=[n_f, Var(role_1=s_f), Var(role_2=i_f)], role_2=[Var(role_2=i_f)], roles_to_pass_down=['role_1'] )) assert field.get_schema() == {keyword: []} assert field.get_schema(role='role_1') == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert field.get_schema(role='role_2') == {keyword: []}
def test_dict_field(): s_f = StringField() _ = lambda value: Var({'role_1': value}) field = DictField(properties=Var( role_1={'name': Var(role_1=s_f)}, role_2={'name': Var(role_2=s_f)}, roles_to_pass_down=['role_1'] ), pattern_properties=Var( role_1={'.*': Var(role_1=s_f)}, role_2={'.*': Var(role_2=s_f)}, roles_to_pass_down=['role_1'] ), additional_properties=_(s_f), min_properties=_(1), max_properties=_(2)) assert field.get_schema() == { 'type': 'object' } assert field.get_schema(role='role_1') == { 'type': 'object', 'properties': { 'name': s_f.get_schema(), }, 'patternProperties': { '.*': s_f.get_schema(), }, 'additionalProperties': s_f.get_schema(), 'minProperties': 1, 'maxProperties': 2, } assert field.get_schema(role='role_2') == { 'type': 'object', 'properties': {}, 'patternProperties': {}, }
def test_dict_field(): s_f = StringField() _ = lambda value: Var({'role_1': value}) field = DictField(properties=Var( { 'role_1': { 'name': Var({'role_1': s_f}) }, 'role_2': { 'name': Var({'role_2': s_f}) }, }, propagate='role_1'), pattern_properties=Var( { 'role_1': { '.*': Var({'role_1': s_f}) }, 'role_2': { '.*': Var({'role_2': s_f}) }, }, propagate='role_1'), additional_properties=_(s_f), min_properties=_(1), max_properties=_(2)) assert s(field.get_schema()) == s({'type': 'object'}) assert s(field.get_schema(role='role_1')) == s({ 'type': 'object', 'properties': { 'name': s_f.get_schema(), }, 'patternProperties': { '.*': s_f.get_schema(), }, 'additionalProperties': s_f.get_schema(), 'minProperties': 1, 'maxProperties': 2, }) assert s(field.get_schema(role='role_2')) == s({ 'type': 'object', 'properties': {}, 'patternProperties': {}, })
def test_string_field(): _ = lambda value: Var({'role_1': value}) field = StringField(format=_('date-time'), min_length=_(1), max_length=_(2)) assert field.get_schema() == {'type': 'string'} assert field.get_schema(role='role_1') == { 'type': 'string', 'format': 'date-time', 'minLength': 1, 'maxLength': 2, } with pytest.raises(ValueError) as e: StringField(pattern=_('(')) assert str(e.value) == 'Invalid regular expression: unbalanced parenthesis'
def test_string_field(): _ = lambda value: Var({'role_1': value}) field = StringField(format=_('date-time'), min_length=_(1), max_length=_(2)) assert field.get_schema() == { 'type': 'string' } assert field.get_schema(role='role_1') == { 'type': 'string', 'format': 'date-time', 'minLength': 1, 'maxLength': 2, } with pytest.raises(ValueError) as e: StringField(pattern=_('(')) assert str(e.value) == 'Invalid regular expression: unbalanced parenthesis'
def test_keyword_of_fields(keyword, field_cls): s_f = StringField() n_f = NumberField() i_f = IntField() field = field_cls([n_f, Var({'role_1': s_f}), Var({'role_2': i_f})]) assert field.get_schema() == { keyword: [n_f.get_schema()] } assert field.get_schema(role='role_1') == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert field.get_schema(role='role_2') == { keyword: [n_f.get_schema(), i_f.get_schema()] } field = field_cls(Var({ 'role_1': [n_f, Var({'role_1': s_f}), Var({'role_2': i_f})], 'role_2': [Var({'role_2': i_f})], }, propagate='role_1')) assert field.get_schema() == {keyword: []} assert field.get_schema(role='role_1') == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert field.get_schema(role='role_2') == {keyword: []}
def test_keyword_of_fields(keyword, field_cls): s_f = StringField() n_f = NumberField() i_f = IntField() field = field_cls([n_f, Var({'role_1': s_f}), Var({'role_2': i_f})]) assert s(field.get_schema()) == { keyword: [n_f.get_schema()] } assert s(field.get_schema(role='role_1')) == { keyword: [n_f.get_schema(), s_f.get_schema()] } assert s(field.get_schema(role='role_2')) == { keyword: [n_f.get_schema(), i_f.get_schema()] } field = field_cls(Var({ 'role_1': [n_f, Var({'role_1': s_f}), Var({'role_2': i_f})], 'role_2': [Var({'role_2': i_f})], }, propagate='role_1')) assert s(field.get_schema(role='role_1')) == { keyword: [n_f.get_schema(), s_f.get_schema()] } with pytest.raises(SchemaGenerationException): field.get_schema(role='role_2')
def test_dict_field(): s_f = StringField() _ = lambda value: Var({'role_1': value}) field = DictField(properties=Var( { 'role_1': {'name': Var({'role_1': s_f})}, 'role_2': {'name': Var({'role_2': s_f})}, }, propagate='role_1' ), pattern_properties=Var( { 'role_1': {'.*': Var({'role_1': s_f})}, 'role_2': {'.*': Var({'role_2': s_f})}, }, propagate='role_1' ), additional_properties=_(s_f), min_properties=_(1), max_properties=_(2)) assert s(field.get_schema()) == s({ 'type': 'object' }) assert s(field.get_schema(role='role_1')) == s({ 'type': 'object', 'properties': { 'name': s_f.get_schema(), }, 'patternProperties': { '.*': s_f.get_schema(), }, 'additionalProperties': s_f.get_schema(), 'minProperties': 1, 'maxProperties': 2, }) assert s(field.get_schema(role='role_2')) == s({ 'type': 'object', 'properties': {}, 'patternProperties': {}, })
def test_not_field(): s_f = StringField() field = NotField(Var({'role_1': s_f})) assert field.get_schema() == {'not': {}} assert field.get_schema(role='role_1') == {'not': s_f.get_schema()}
def test_not_field(): s_f = StringField() field = NotField(Var({'role_1': s_f})) assert field.get_schema() == {'not': {}} assert field.get_schema(role='role_1') == {'not': s_f.get_schema()}