-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: rewrite using pytest instead of unittest
- Loading branch information
1 parent
fe4a51e
commit 084a818
Showing
2 changed files
with
87 additions
and
78 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,65 @@ | ||
import asyncio | ||
import unittest | ||
from unittest import mock | ||
import pytest | ||
|
||
from ohsome_quality_analyst.base.indicator import Result | ||
from ohsome_quality_analyst.geodatabase import client as db_client | ||
from ohsome_quality_analyst.indicators.minimal.indicator import Minimal | ||
|
||
from .utils import get_geojson_fixture, get_layer_fixture | ||
|
||
class TestBaseIndicator(unittest.TestCase): | ||
def setUp(self): | ||
self.feature = asyncio.run( | ||
db_client.get_feature_from_db(dataset="regions", feature_id="3") | ||
) | ||
self.layer_key = "minimal" | ||
|
||
def test_as_feature(self): | ||
indicator = Minimal(feature=self.feature, layer=mock.Mock()) | ||
feature = indicator.as_feature() | ||
assert feature.is_valid | ||
assert feature.geometry == feature.geometry | ||
for prop in ("result", "metadata", "layer"): | ||
assert prop in feature["properties"] | ||
assert "data" not in feature["properties"] | ||
|
||
def test_as_feature_include_data(self): | ||
indicator = Minimal(feature=self.feature, layer=mock.Mock()) | ||
feature = indicator.as_feature(include_data=True) | ||
assert feature.is_valid | ||
for key in ("result", "metadata", "layer", "data"): | ||
assert key in feature["properties"] | ||
assert "count" in feature["properties"]["data"] | ||
|
||
def test_as_feature_flatten(self): | ||
indicator = Minimal(feature=self.feature, layer=mock.Mock()) | ||
feature = indicator.as_feature(flatten=True) | ||
assert feature.is_valid | ||
for key in ( | ||
"result.value", | ||
"metadata.name", | ||
"layer.name", | ||
): | ||
assert key in feature["properties"] | ||
|
||
def test_data_property(self): | ||
indicator = Minimal(feature=self.feature, layer=mock.Mock()) | ||
self.assertIsNotNone(indicator.data) | ||
for key in indicator.data.keys(): | ||
self.assertNotIn(key, ("result", "metadata", "layer", "feature")) | ||
|
||
def test_attribution_class_property(self): | ||
self.assertIsNotNone(Minimal.attribution()) | ||
self.assertIsInstance(Minimal.attribution(), str) | ||
|
||
|
||
class TestBaseResult(unittest.TestCase): | ||
def test_label(self): | ||
result = Result("", "", "") | ||
assert result.label == "undefined" | ||
result.class_ = 4 | ||
assert result.label == "green" | ||
|
||
@pytest.fixture | ||
def feature(): | ||
return get_geojson_fixture("heidelberg-altstadt-feature.geojson") | ||
|
||
|
||
@pytest.fixture | ||
def layer(): | ||
return get_layer_fixture("minimal") | ||
|
||
|
||
def test_as_feature(feature, layer): | ||
indicator = Minimal(feature=feature, layer=layer) | ||
feature = indicator.as_feature() | ||
assert feature.is_valid | ||
assert feature.geometry == feature.geometry | ||
for prop in ("result", "metadata", "layer"): | ||
assert prop in feature["properties"] | ||
assert "data" not in feature["properties"] | ||
|
||
|
||
def test_as_feature_include_data(feature, layer): | ||
indicator = Minimal(feature=feature, layer=layer) | ||
feature = indicator.as_feature(include_data=True) | ||
assert feature.is_valid | ||
for key in ("result", "metadata", "layer", "data"): | ||
assert key in feature["properties"] | ||
assert "count" in feature["properties"]["data"] | ||
|
||
|
||
def test_as_feature_flatten(feature, layer): | ||
indicator = Minimal(feature=feature, layer=layer) | ||
feature = indicator.as_feature(flatten=True) | ||
assert feature.is_valid | ||
for key in ( | ||
"result.value", | ||
"metadata.name", | ||
"layer.name", | ||
): | ||
assert key in feature["properties"] | ||
|
||
|
||
def test_data_property(feature, layer): | ||
indicator = Minimal(feature=feature, layer=layer) | ||
assert indicator.data is not None | ||
for key in ("result", "metadata", "layer", "feature"): | ||
assert key not in feature["properties"] | ||
|
||
|
||
def test_attribution_class_property(): | ||
assert isinstance(Minimal.attribution(), str) | ||
|
||
|
||
def test_base_result_label(): | ||
result = Result("", "", "") | ||
assert result.label == "undefined" | ||
result.class_ = 4 | ||
assert result.label == "green" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,34 @@ | ||
import asyncio | ||
import unittest | ||
from unittest import mock | ||
import pytest | ||
|
||
from ohsome_quality_analyst.geodatabase import client as db_client | ||
from ohsome_quality_analyst.indicators.minimal.indicator import ( | ||
Minimal as MinimalIndicator, | ||
) | ||
from ohsome_quality_analyst.reports.minimal.report import Minimal as MinimalReport | ||
|
||
from .utils import get_geojson_fixture, get_layer_fixture | ||
|
||
class TestBaseReport(unittest.TestCase): | ||
def test_as_feature(self): | ||
feature = asyncio.run( | ||
db_client.get_feature_from_db(dataset="regions", feature_id="3") | ||
) | ||
indicator = MinimalIndicator(feature=feature, layer=mock.Mock()) | ||
report = MinimalReport(feature=feature) | ||
report.set_indicator_layer() | ||
for _ in report.indicator_layer: | ||
report.indicators.append(indicator) | ||
|
||
feature = report.as_feature(flatten=True, include_data=True) | ||
assert feature.is_valid | ||
assert "indicators.0.data.count" in feature["properties"].keys() | ||
|
||
def test_attribution_class_property(self): | ||
assert MinimalReport.attribution() is not None | ||
assert isinstance(MinimalReport.attribution(), str) | ||
|
||
@pytest.fixture | ||
def feature(): | ||
return get_geojson_fixture("heidelberg-altstadt-feature.geojson") | ||
|
||
|
||
@pytest.fixture | ||
def layer(): | ||
return get_layer_fixture("minimal") | ||
|
||
|
||
def test_as_feature(feature, layer): | ||
indicator = MinimalIndicator(feature=feature, layer=layer) | ||
report = MinimalReport(feature=feature) | ||
report.set_indicator_layer() | ||
for _ in report.indicator_layer: | ||
report.indicators.append(indicator) | ||
|
||
feature = report.as_feature(flatten=True, include_data=True) | ||
assert feature.is_valid | ||
assert "indicators.0.data.count" in feature["properties"].keys() | ||
|
||
|
||
def test_attribution_class_property(): | ||
assert isinstance(MinimalReport.attribution(), str) |