From 9ec465e276d3a5eb370db5bbe8098c455f31cd8f Mon Sep 17 00:00:00 2001 From: daniel Date: Wed, 8 Apr 2026 14:36:20 +0200 Subject: [PATCH] verfahrensgebiet-Vaiable wird sauber gesetzt --- functions/qgiscore_wrapper.py | 28 +++++++++++++++++++++++++ tests/test_verfahrensgebiet_manager.py | 29 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/functions/qgiscore_wrapper.py b/functions/qgiscore_wrapper.py index 2ece68e..a1f7f90 100644 --- a/functions/qgiscore_wrapper.py +++ b/functions/qgiscore_wrapper.py @@ -345,6 +345,34 @@ except Exception: QgsUnitTypes = _MockQgsUnitTypes QgsLayoutItem = _MockQgsLayoutItem + class _MockQgsFeature: + def __init__(self): + self._geometry = None + self._attributes = [] + + def setGeometry(self, geometry: Any) -> None: + self._geometry = geometry + + def setAttributes(self, attributes: list[Any]) -> None: + self._attributes = attributes + + class _MockQgsField: + def __init__(self, name: str = "", field_type: Any = None): + self.name = name + self.field_type = field_type + + class _MockQgsGeometry: + @staticmethod + def unaryUnion(_geometries: list[Any]): + return None + + def isEmpty(self) -> bool: + return True + + QgsFeature = _MockQgsFeature + QgsField = _MockQgsField + QgsGeometry = _MockQgsGeometry + class _MockQgsFeatureRequest: def __init__(self): self._filter_rect = None diff --git a/tests/test_verfahrensgebiet_manager.py b/tests/test_verfahrensgebiet_manager.py index 1ee5bc9..ebb43fb 100644 --- a/tests/test_verfahrensgebiet_manager.py +++ b/tests/test_verfahrensgebiet_manager.py @@ -14,6 +14,24 @@ class _Scope: class TestVerfahrensgebietManager(unittest.TestCase): + @patch("sn_basis.functions.verfahrensgebiet_manager.get_variable", return_value="layer_123") + def test_get_verfahrensgebiet_layer_id_returns_value(self, _mock_get_variable): + result = verfahrensgebiet_manager.get_verfahrensgebiet_layer_id() + + self.assertEqual(result, "layer_123") + + @patch("sn_basis.functions.verfahrensgebiet_manager.get_variable", return_value="") + def test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value(self, _mock_get_variable): + result = verfahrensgebiet_manager.get_verfahrensgebiet_layer_id() + + self.assertIsNone(result) + + @patch("sn_basis.functions.verfahrensgebiet_manager.set_variable") + def test_set_verfahrensgebiet_layer_id_writes_project_variable(self, mock_set_variable): + verfahrensgebiet_manager.set_verfahrensgebiet_layer_id("layer_abc") + + mock_set_variable.assert_called_once_with("verfahrensgebiet_layer", "layer_abc", scope="project") + @patch("sn_basis.functions.verfahrensgebiet_manager._find_verfahrensgebiet_layer") @patch("sn_basis.functions.variable_wrapper.QgsProject.instance") @patch("sn_basis.functions.variable_wrapper.QgsExpressionContextUtils.setProjectVariable") @@ -34,6 +52,17 @@ class TestVerfahrensgebietManager(unittest.TestCase): self.assertFalse(result) mock_set_project_variable.assert_not_called() + @patch("sn_basis.functions.verfahrensgebiet_manager._find_verfahrensgebiet_layer") + @patch("sn_basis.functions.verfahrensgebiet_manager.set_variable") + def test_update_with_layer_writes_variable(self, mock_set_variable, mock_find_layer): + mock_layer = object() + mock_find_layer.return_value = (mock_layer, "layer_99") + + result = verfahrensgebiet_manager._update_verfahrensgebiet_from_project() + + self.assertTrue(result) + mock_set_variable.assert_called_once_with("verfahrensgebiet_layer", "layer_99", scope="project") + if __name__ == "__main__": unittest.main()