def test_validate_raw_json_missing_required_module_keys(field):
    module = dict(name='foo',
                  dataSource='foo',
                  width=1,
                  height=1,
                  type='line',
                  family='C3')
    del module[field]
    d = _schema(layout='grid', modules=[module])
    with pytest.raises(app.InvalidSchemaError):
        app.validate_raw_json(d)
Beispiel #2
0
def test_validate_raw_json_invalid_family():
    config = _schema(
        layout='grid',
        modules=[
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=1, height=1, family='LOLWUT', type='line'),
        ]
    )
    with pytest.raises(app.InvalidSchemaError) as exc:
        app.validate_raw_json(config)
    assert 'unallowed value LOLWUT' in str(exc.value)
Beispiel #3
0
def test_validate_raw_json_missing_row_for_layout_grid():
    module = dict(
        guid='a-b-c-d-e',
        name='foo', dataSource='foo',
        width='col-1', height=1, type='line', layout='grid', family='C3',
    )
    config = _schema(
        layout='grid',
        modules=[module]
    )
    with pytest.raises(app.InvalidSchemaError) as exc:
        app.validate_raw_json(config)
    assert 'Invalid row value for module "foo"' in str(exc.value)
def test_validate_raw_json_missing_required_fixedgrid_module_keys(field):
    module = dict(
        guid='a-b-c-d-e',
        name='foo', dataSource='foo',
        width='col-1', height=1, type='line',
        row=1, family='C3')
    del module[field]
    d = _schema(
        layout='grid',
        modules=[module]
    )
    with pytest.raises(app.InvalidSchemaError):
        app.validate_raw_json(d)
def test_validate_raw_json_invalid_mixed_use_freeform_with_rows():
    # Ensure `row` in modules and layout `freeform` cannot be mixed.
    module = dict(
        name='foo',
        dataSource='foo',
        width=1,
        height=1,
        type='line',
        row=1,
        family='C3',
    )
    config = _schema(layout='freeform', modules=[module])
    with pytest.raises(ValueError) as exc:
        app.validate_raw_json(config)
    assert 'Cannot mix' in str(exc.value)
def test_validate_raw_json_invalid_mixed_use_freeform_with_rows():
    # Ensure `row` in modules and layout `freeform` cannot be mixed.
    module = dict(
        guid='a-b-c-d-e',
        name='foo', dataSource='foo',
        width=1, height=1, type='line',
        row=1, family='C3',
    )
    config = _schema(
        layout='freeform',
        modules=[module]
    )
    with pytest.raises(app.InvalidSchemaError) as exc:
        app.validate_raw_json(config)
    assert 'Cannot mix' in str(exc.value)
Beispiel #7
0
def test_validate_raw_json_invalid_missing_toplevel_keys(field):
    module = dict(
        name='foo',
        dataSource='foo',
        width=1,
        height=1,
        type='line',
        row=1,
        family='C3',
    )
    config = _schema(layout='freeform', modules=[module])
    config = json.loads(config)
    del config[field]
    with pytest.raises(ValueError):
        app.validate_raw_json(json.dumps(config))
Beispiel #8
0
def test_validate_raw_json_invalid_missing_toplevel_keys(field):
    module = dict(
        guid='a-b-c-d-e',
        layout='freeform',
        name='foo', dataSource='foo',
        width=1, height=1, type='line', family='C3',
    )
    config = _schema(
        layout='freeform',
        modules=[module]
    )
    config = json.loads(config)
    del config[field]
    with pytest.raises(app.InvalidSchemaError) as exc:
        app.validate_raw_json(json.dumps(config))
    assert "{'" + field + "': ['required field']}" in str(exc.value)
Beispiel #9
0
def test_validate_raw_json_invalid_grid_nonconsencutive_rows():
    # Ensure row numbers can't "skip", e.g. [1, 2, 10]
    config = _schema(
        layout='grid',
        modules=[
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=1, height=1, family='C3', type='line'),
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=2, height=1, family='C3', type='line'),
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=10, height=1, family='C3', type='line'),
        ]
    )
    with pytest.raises(app.InvalidSchemaError) as exc:
        app.validate_raw_json(config)
    assert 'Row order is not consecutive' in str(exc.value)
Beispiel #10
0
def test_validate_raw_json_invalid_width_string_cols_for_freeform_type():
    config = _schema(
        layout='freeform',
        modules=[
            dict(guid='a-b-c-d-e',
                 name='f',
                 dataSource='f',
                 width='col-12',
                 height=1,
                 family='C3',
                 type='line'),
        ]
    )
    with pytest.raises(app.InvalidSchemaError) as exc:
        app.validate_raw_json(config)
    err = str(exc.value)
    assert 'Invalid value for width in `freeform` layout.' in err
Beispiel #11
0
def test_validate_raw_json_valid_fixed():
    d = _schema(
        layout='freeform',
        modules=[
            dict(guid='a-b-c-d-e', name='foo', dataSource='foo',
                 width='1', height=1, type='line',
                 family='C3')]
    )
    assert app.validate_raw_json(d)
def test_validate_raw_json_valid_freeform():
    d = _schema(layout='freeform',
                modules=[
                    dict(name='foo',
                         dataSource='foo',
                         width=1,
                         height=1,
                         type='line',
                         family='C3')
                ])
    assert app.validate_raw_json(d)
def test_validate_raw_json_missing_optional_freeform_module_keys(field):
    # Ensure that required fields for fixed grid
    # are not required for freeform layouts.
    module = dict(name='foo',
                  dataSource='foo',
                  width=1,
                  height=1,
                  type='line',
                  row=1,
                  family='C3')
    del module[field]
    d = _schema(layout='freeform', modules=[module])
    assert app.validate_raw_json(d)
def test_validate_raw_json_missing_optional_freeform_module_keys(field):
    # Ensure that required fields for fixed grid
    # are not required for freeform layouts.
    module = dict(
        guid='a-b-c-d-e',
        name='foo', dataSource='foo',
        width=1, height=1, type='line',
        row=1, family='C3')
    del module[field]
    d = _schema(
        layout='freeform',
        modules=[module]
    )
    assert app.validate_raw_json(d)
Beispiel #15
0
def test_validate_raw_json_invalid_grid_consecutive_but_duplicate_rows():
    # Ensure duplicate row numbers are consecutive, IF they were unique.
    # e.g. [1, 1, 2, 2, 3] is valid.
    config = _schema(
        layout='grid',
        id='a-b-c-d-e',
        modules=[
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=1, height=1, family='C3', type='line'),
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=1, height=1, family='C3', type='line'),
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=2, height=1, family='C3', type='line'),
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=2, height=1, family='C3', type='line'),
            dict(guid='a-b-c-d-e', name='f', dataSource='f', width='col-1',
                 row=3, height=1, family='C3', type='line'),
        ]
    )
    assert app.validate_raw_json(config)
def test_validate_raw_json_valid_empty_modules():
    assert app.validate_raw_json(_schema())
def test_validate_raw_json_valid_empty_modules():
    assert app.validate_raw_json(_schema())