Esempio n. 1
0
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,
    }
Esempio n. 2
0
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: []}
Esempio n. 3
0
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,
    }
Esempio n. 4
0
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')
Esempio n. 5
0
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: []}
Esempio n. 6
0
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': {},
    }
Esempio n. 7
0
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': {},
    })
Esempio n. 8
0
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'
Esempio n. 9
0
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'
Esempio n. 10
0
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: []}
Esempio n. 11
0
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')
Esempio n. 12
0
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': {},
    })
Esempio n. 13
0
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()}
Esempio n. 14
0
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()}