Exemple #1
0
def test_model_builder_towns(source_data_towns, schema_towns):
    model = ModelBuilder().from_compact(source_data_towns) \
                          .with_schema(schema_towns) \
                          .render()

    assert model

    level_dfs = model.levels_datasets
    resource_dfs = model.resources_datasets

    assert len(level_dfs) == 3
    assert len(resource_dfs) == 1

    df_area = level_dfs[0]
    assert df_area.shape == (2, 4)
    assert list(df_area.columns) == ['area', 'pos', 'id', 'label']
    assert df_area['label'][4] == 'A02 Asia'

    df_country = level_dfs[1]
    assert df_country.shape == (4, 6)
    assert list(df_country.columns) == ['area', 'country', 'pos', 'id_parent', 'id', 'label']
    assert df_country['label'][2] == 'A01C03 Italia'

    df_town = level_dfs[2]
    assert df_town.shape == (5, 7)
    assert list(df_town.columns) == ['area', 'country', 'town', 'pos', 'id_parent', 'id', 'label']
    assert df_town['label'][1] == 'A01C01T02 Lyon'

    df_monument = resource_dfs['monument']
    assert df_monument.shape == (6, 8)
    i_paris = 0
    assert list(df_monument.columns) == ['area', 'country', 'town', 'monument', 'pos', 'id_parent', 'id', 'label']
    assert df_monument['label'][i_paris] == 'A01C01T01M01 Eiffel Tower'
Exemple #2
0
def test_pretty_print(source_data_towns, schema_towns):
    model = ModelBuilder().from_compact(source_data_towns) \
                          .with_schema(schema_towns) \
                          .render()

    lines = model.pretty_print()

    assert len(lines) == 40
    assert lines[0] == 'there are 2 area(s)'
    assert lines[1] == '  A01, A02'
    assert lines[2] == '  area A01: Europe'
    assert lines[3] == '    has 3 country(s)'
    assert lines[4] == '      A01C01, A01C02, A01C03'
    assert lines[5] == '      country A01C01: France'
    assert lines[6] == '        has 2 town(s)'
    assert lines[7] == '          A01C01T01, A01C01T02'
    assert lines[8] == '          town A01C01T01: Paris'
    assert lines[9] == '            has 2 monument(s)'
    assert lines[10] == '               A01C01T01M01, A01C01T01M02'
    assert lines[11] == '                 monument A01C01T01M01: Eiffel Tower'
    assert lines[12] == '                 monument A01C01T01M02: Louvre Museum'
    assert lines[13] == '          town A01C01T02: Lyon'
    assert lines[14] == '            has 0 monument(s)'
    assert lines[15] == '      country A01C02: UK'
def test_model_storage_towns(source_data_towns, schema_towns, root_location):
    model = ModelBuilder().from_compact(source_data_towns) \
                          .with_schema(schema_towns) \
                          .render()
    assert model

    storage = ModelStorageService(root_location.path)
    storage.save(model)

    model_folder = path.join(root_location.path, 'current')

    assert path.exists(model_folder)
    assert path.isdir(model_folder)

    # schema
    schema_file = path.join(model_folder, 'schema.json')
    assert path.exists(schema_file)
    assert path.isfile(schema_file)

    # levels
    for name in schema_towns.levels_keys():
        level_dataset_file = path.join(model_folder, f'{name}.csv')
        assert path.exists(level_dataset_file)
        assert path.isfile(level_dataset_file)

    # resources
    if False:
        for name in schema_towns.resources_keys():
            resource_dataset_file = path.join(model_folder, f'{name}.csv')
            assert path.exists(resource_dataset_file)
            assert path.isfile(resource_dataset_file)

    # tree
    tree_file = path.join(model_folder, 'tree.json')
    assert path.exists(tree_file)
    assert path.isfile(tree_file)
def model_towns(source_data_towns, schema_towns):
    model = ModelBuilder().from_compact(source_data_towns) \
                          .with_schema(schema_towns) \
                          .render()
    return model
Exemple #5
0
def model_fanout(source_data_fanout, schema_fanout):
    model = ModelBuilder().from_compact(source_data_fanout) \
                          .with_schema(schema_fanout) \
                          .render()
    return model
Exemple #6
0
def test_model_builder_towns_has_schema(source_data_towns, schema_towns):
    model = ModelBuilder().from_compact(source_data_towns) \
                          .with_schema(schema_towns) \
                          .render()
    assert model
    assert model.schema
Exemple #7
0
def test_model_builder_field_not_found(source_data_towns, wrong_schema):
    with pytest.raises(RuntimeError) as excinfo:
        mb = ModelBuilder()
        mb.from_compact(source_data_towns).with_schema(wrong_schema).render()

    assert "doesnotexist not found in datasource" in str(excinfo.value)