Ejemplo n.º 1
0
def test_array_field_walk():
    aa = fields.StringField()
    a = fields.DictField(properties={'aa': aa})
    b = fields.StringField()
    c = fields.StringField()

    array_field = fields.ArrayField((a, b), additional_items=c)
    path = list(array_field.walk())
    expected_path = [array_field, a, aa, b, c]
    assert path == expected_path

    array_field = fields.ArrayField(a, additional_items=False)
    path = list(array_field.walk())
    expected_path = [array_field, a, aa]
    assert path == expected_path
Ejemplo n.º 2
0
def test_array_field_to_schema():
    items_mock = fields.StringField()
    additional_items_mock = fields.DictField()

    f = fields.ArrayField(items_mock)
    assert f.get_definitions_and_schema() == ({}, {
        'type': 'array',
        'items': items_mock.get_schema(),
    })

    expected_items = [
        ('type', 'array'),
        ('id', 'test'),
        ('title', 'Array'),
        ('items', items_mock.get_schema()),
        ('additionalItems', additional_items_mock.get_schema()),
        ('minItems', 0),
        ('maxItems', 10),
        ('uniqueItems', True),
    ]
    f = fields.ArrayField(items_mock,
                          id='test',
                          title='Array',
                          min_items=0,
                          max_items=10,
                          unique_items=True,
                          additional_items=additional_items_mock)
    assert f.get_definitions_and_schema() == ({}, dict(expected_items))
    definitions, ordered_schema = f.get_definitions_and_schema(ordered=True)
    assert isinstance(ordered_schema, OrderedDict)
    assert ordered_schema == OrderedDict(expected_items)

    f = fields.ArrayField(items_mock, additional_items=True)
    assert f.get_definitions_and_schema() == ({}, {
        'type': 'array',
        'items': items_mock.get_schema(),
        'additionalItems': True,
    })

    f = fields.ArrayField(items_mock, additional_items=additional_items_mock)
    assert f.get_definitions_and_schema() == ({}, {
        'type':
        'array',
        'items':
        items_mock.get_schema(),
        'additionalItems':
        additional_items_mock.get_schema(),
    })

    item_1_mock = fields.NumberField()
    item_2_mock = fields.ArrayField(fields.StringField())
    f = fields.ArrayField([item_1_mock, item_2_mock])
    assert f.get_definitions_and_schema() == ({}, {
        'type':
        'array',
        'items': [item_1_mock.get_schema(),
                  item_2_mock.get_schema()],
    })
Ejemplo n.º 3
0
def test_array_field_to_schema():
    s_f = fields.StringField()
    d_f = fields.DictField()

    f = fields.ArrayField(s_f)
    definitions, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {
        'type': 'array',
        'items': s_f.get_schema(),
    }

    expected_items = [
        ('type', 'array'),
        ('id', 'test'),
        ('title', 'Array'),
        ('items', s_f.get_schema()),
        ('additionalItems', d_f.get_schema()),
        ('minItems', 0),
        ('maxItems', 10),
        ('uniqueItems', True),
    ]
    f = fields.ArrayField(s_f,
                          id='test',
                          title='Array',
                          min_items=0,
                          max_items=10,
                          unique_items=True,
                          additional_items=d_f)
    definitions, schema = f.get_definitions_and_schema()
    assert normalize(schema) == dict(expected_items)
    definitions, ordered_schema = f.get_definitions_and_schema(ordered=True)
    assert isinstance(ordered_schema, OrderedDict)
    assert normalize(ordered_schema) == OrderedDict(expected_items)

    f = fields.ArrayField(s_f, additional_items=True)
    definitions, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {
        'type': 'array',
        'items': s_f.get_schema(),
        'additionalItems': True,
    }

    f = fields.ArrayField(s_f, additional_items=d_f)
    definitions, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {
        'type': 'array',
        'items': s_f.get_schema(),
        'additionalItems': d_f.get_schema(),
    }

    n_f = fields.NumberField()
    a_f = fields.ArrayField(fields.StringField())
    f = fields.ArrayField([n_f, a_f])
    definitions, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {
        'type': 'array',
        'items': [n_f.get_schema(), a_f.get_schema()],
    }
Ejemplo n.º 4
0
def test_of_fields():
    field_1_mock = fields.StringField()
    field_2_mock = fields.BooleanField()
    field_3_mock = fields.ArrayField(fields.IntField())
    of_fields = [field_1_mock, field_2_mock, field_3_mock]

    f = fields.OneOfField(of_fields)
    _, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {'oneOf': [f.get_schema() for f in of_fields]}

    f = fields.AnyOfField(of_fields)
    _, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {'anyOf': [f.get_schema() for f in of_fields]}

    f = fields.AllOfField(of_fields)
    _, schema = f.get_definitions_and_schema()
    assert normalize(schema) == {'allOf': [f.get_schema() for f in of_fields]}
Ejemplo n.º 5
0
 class Tree(Document):
     node = fields.OneOfField([
         fields.ArrayField(fields.DocumentField('self')),
         fields.StringField(),
     ])