Files
Plugin_SN_Basis/tests/test_verfahrensgebiet_manager.py
T
DanielandClaude Sonnet 5 23aab76e42 Restliche sn_basis-Tests: deutsche Docstrings ergänzt
81 Testfälle in 11 Dateien im Rahmen des Test-Audits durchgesehen und mit
"Prüft, dass ..."-Docstring versehen (Projektwissen #16). Kein Verhalten
geändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 15:06:16 +02:00

74 lines
3.3 KiB
Python

import unittest
from unittest.mock import patch
from sn_basis.functions import verfahrensgebiet_manager
class _Scope:
def __init__(self, value: str):
self._value = value
def variable(self, _name: str) -> str:
return self._value
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):
"""Prüft, dass get_verfahrensgebiet_layer_id() die in der Projektvariable gespeicherte Layer-ID liefert."""
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):
"""Prüft, dass get_verfahrensgebiet_layer_id() bei leerer Projektvariable None statt eines leeren Strings liefert."""
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):
"""Prüft, dass set_verfahrensgebiet_layer_id() die Layer-ID als Projektvariable 'verfahrensgebiet_layer' speichert."""
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")
@patch("sn_basis.functions.variable_wrapper.QgsExpressionContextUtils.projectScope")
def test_update_without_layer_does_not_write_when_already_empty(
self,
mock_project_scope,
mock_set_project_variable,
mock_project_instance,
mock_find_layer,
):
"""Prüft, dass ohne gefundenen Verfahrensgebiet-Layer keine Schreibaktion erfolgt, wenn die Variable bereits leer ist."""
mock_find_layer.return_value = (None, None)
mock_project_instance.return_value = object()
mock_project_scope.return_value = _Scope("")
result = verfahrensgebiet_manager._update_verfahrensgebiet_from_project()
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):
"""Prüft, dass ein gefundener Verfahrensgebiet-Layer seine ID als Projektvariable speichert."""
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()