Skip to content

Commit

Permalink
tests according to the model checking: proper layer naming, if layer …
Browse files Browse the repository at this point in the history
…is relevant in current project
  • Loading branch information
signedav committed Aug 14, 2023
1 parent 1643377 commit a49fa84
Show file tree
Hide file tree
Showing 5 changed files with 456 additions and 115 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,10 @@ Is enforced with pre-commit. To use, make:
```
pip install pre-commit
pre-commit install
```00
```

And to run it over all the files (with infile changes):

```
pre-commit run --color=always --all-file
```
Expand Down
2 changes: 2 additions & 0 deletions modelbaker/dataobjects/layers.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ def __init__(
self.model_topic_name = (
f"{self.ili_name.split('.')[0]}.{self.ili_name.split('.')[1]}"
)

self.is_relevant = is_relevant

self.definitionfile = definitionfile
self.qmlstylefile = qmlstylefile
Expand Down
4 changes: 2 additions & 2 deletions modelbaker/generator/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ def layers(self, filter_layer_list=[]):
record.get("tablename") == self._db_connector.dataset_table_name
)

is_relevant = bool(record.get("relevance")) if self.optimize_strategy != Generator.OptimizeStrategy.NONE else True
is_relevant = bool(record.get("relevance")) # it can be not relevant and still be displayed (in case of NONE) if self.optimize_strategy != Generator.OptimizeStrategy.NONE else True

alias = record["table_alias"] if "table_alias" in record else None
if not alias:
Expand Down Expand Up @@ -195,7 +195,7 @@ def layers(self, filter_layer_list=[]):
+ match.group(1).split(".")[-1]
+ ")"
)
alias = short_name #for-relevance-tests if is_relevant else f"{short_name} !IRRELEVANT!" #for-relevance-tests
alias = short_name #for-relevance-tests if is_relevant else f"{short_name} !IRRELEVANT!"

display_expression = ""
if is_basket_table:
Expand Down
112 changes: 0 additions & 112 deletions tests/test_projectgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,118 +57,6 @@ def setUpClass(cls):
"""Run before all tests."""
cls.basetestpath = tempfile.mkdtemp()

def test_layernaming_postgis(self):
# purpose is to eliminate ambiguous layer names by adding suffix topic (if needed) and model (if needed)
importer = iliimporter.Importer()
importer.tool = DbIliMode.ili2pg
importer.configuration = iliimporter_config(importer.tool)
importer.configuration.ilifile = testdata_path("ilimodels/Polymorphic_Ortsplanung_V1_1.ili")
importer.configuration.ilimodels = "Polymorphic_Ortsplanung_V1_1"
importer.configuration.dbschema = "layernaming_{:%Y%m%d%H%M%S%f}".format(
datetime.datetime.now()
)

importer.configuration.srs_code = 2056
importer.configuration.inheritance = "smart2"
importer.configuration.create_basket_col = True
importer.stdout.connect(self.print_info)
importer.stderr.connect(self.print_error)
assert importer.run() == iliimporter.Importer.SUCCESS

generator = Generator(
DbIliMode.ili2pg,
get_pg_connection_string(),
importer.configuration.inheritance,
importer.configuration.dbschema,
)

available_layers = generator.layers()
aliases = [l.alias for l in available_layers]

# are there no ambiguous layer aliases?
ambiguous_aliases = [alias for alias in aliases if aliases.count(alias)>1]
assert len(ambiguous_aliases) == 0

# are the layers named correctly
expected_aliases = ['BesitzerIn', 'Freizeit.Gebaeude', 'Gewerbe.Gebaeude', 'Hallen.Gebaeude', 'IndustrieGewerbe.Gebaeude', 'Markthalle', 'Ortsplanung_V1_1.Konstruktionen.Gebaeude', 'Polymorphic_Ortsplanung_V1_1.Konstruktionen.Gebaeude', 'Strasse', 'TurnhalleTyp1', 'TurnhalleTyp2']
assert set(aliases) == set(expected_aliases)


def test_layernaming_geopackage(self):
# purpose is to eliminate ambiguous layer names by adding suffix topic (if needed) and model (if needed)
importer = iliimporter.Importer()
importer.tool = DbIliMode.ili2gpkg
importer.configuration = iliimporter_config(importer.tool)
importer.configuration.ilifile = testdata_path("ilimodels/Polymorphic_Ortsplanung_V1_1.ili")
importer.configuration.ilimodels = "Polymorphic_Ortsplanung_V1_1"
importer.configuration.dbfile = os.path.join(
self.basetestpath,
"tmp_layernaming_{:%Y%m%d%H%M%S%f}.gpkg".format(datetime.datetime.now()),
)
importer.configuration.srs_code = 2056
importer.configuration.inheritance = "smart2"
importer.configuration.create_basket_col = True
importer.stdout.connect(self.print_info)
importer.stderr.connect(self.print_error)
assert importer.run() == iliimporter.Importer.SUCCESS

config_manager = GpkgCommandConfigManager(importer.configuration)
uri = config_manager.get_uri()

generator = Generator(DbIliMode.ili2gpkg, uri, "smart2")

available_layers = generator.layers()
aliases = [l.alias for l in available_layers]

# are there no ambiguous layer aliases?
ambiguous_aliases = [alias for alias in aliases if aliases.count(alias)>1]
assert len(ambiguous_aliases) == 0

# are the layers named correctly
expected_aliases = ['BesitzerIn', 'Freizeit.Gebaeude', 'Gewerbe.Gebaeude', 'Hallen.Gebaeude', 'IndustrieGewerbe.Gebaeude', 'Markthalle', 'Ortsplanung_V1_1.Konstruktionen.Gebaeude', 'Polymorphic_Ortsplanung_V1_1.Konstruktionen.Gebaeude', 'Strasse', 'TurnhalleTyp1', 'TurnhalleTyp2']
assert set(aliases) == set(expected_aliases)

def test_layernaming_mssql(self):
# purpose is to eliminate ambiguous layer names by adding suffix topic (if needed) and model (if needed)
importer = iliimporter.Importer()
importer.tool = DbIliMode.ili2mssql
importer.configuration = iliimporter_config(importer.tool)
importer.configuration.ilifile = testdata_path("ilimodels/Polymorphic_Ortsplanung_V1_1.ili")
importer.configuration.ilimodels = "Polymorphic_Ortsplanung_V1_1"
importer.configuration.dbschema = "layernaming_{:%Y%m%d%H%M%S%f}".format(
datetime.datetime.now()
)
importer.configuration.srs_code = 2056
importer.configuration.inheritance = "smart2"
importer.configuration.create_basket_col = True
importer.stdout.connect(self.print_info)
importer.stderr.connect(self.print_error)

uri = "DRIVER={drv};SERVER={server};DATABASE={db};UID={uid};PWD={pwd}".format(
drv="{ODBC Driver 17 for SQL Server}",
server=importer.configuration.dbhost,
db=importer.configuration.database,
uid=importer.configuration.dbusr,
pwd=importer.configuration.dbpwd,
)

assert importer.run() == iliimporter.Importer.SUCCESS

generator = Generator(
DbIliMode.ili2mssql, uri, "smart2", importer.configuration.dbschema
)

available_layers = generator.layers()
aliases = [l.alias for l in available_layers]

# are there no ambiguous layer aliases?
ambiguous_aliases = [alias for alias in aliases if aliases.count(alias)>1]
assert len(ambiguous_aliases) == 0

# are the layers named correctly
expected_aliases = ['BesitzerIn', 'Freizeit.Gebaeude', 'Gewerbe.Gebaeude', 'Hallen.Gebaeude', 'IndustrieGewerbe.Gebaeude', 'Markthalle', 'Ortsplanung_V1_1.Konstruktionen.Gebaeude', 'Polymorphic_Ortsplanung_V1_1.Konstruktionen.Gebaeude', 'Strasse', 'TurnhalleTyp1', 'TurnhalleTyp2']
assert set(aliases) == set(expected_aliases)

def test_ili2db3_kbs_postgis(self):
importer = iliimporter.Importer()
importer.tool = DbIliMode.ili2pg
Expand Down
Loading

0 comments on commit a49fa84

Please sign in to comment.