Skip to content

Commit

Permalink
test: rewrite using pytest instead of unittest
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiasschaub committed Jul 27, 2022
1 parent fe4a51e commit 084a818
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 78 deletions.
116 changes: 60 additions & 56 deletions workers/tests/integrationtests/test_base_indicator.py
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"
49 changes: 27 additions & 22 deletions workers/tests/integrationtests/test_base_report.py
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)

0 comments on commit 084a818

Please sign in to comment.