Files
Plugin_SN_Basis/tests/test_settings_logic.py
T
2026-04-20 15:36:38 +02:00

87 lines
3.0 KiB
Python

# sn_basis/test/test_settings_logic.py
import unittest
from unittest.mock import patch
from sn_basis.functions.settings_logic import SettingsLogic
class TestSettingsLogic(unittest.TestCase):
# -----------------------------------------------------
# Test: load() liest alle Variablen über get_variable()
# -----------------------------------------------------
@patch("sn_basis.functions.settings_logic.get_variable")
def test_load(self, mock_get):
# Mock-Rückgabe für jede Variable
mock_get.side_effect = lambda key, scope="project": f"wert_{key}"
logic = SettingsLogic()
daten = logic.load()
# Alle Variablen müssen enthalten sein
for key in SettingsLogic.VARIABLEN:
self.assertIn(key, daten)
self.assertEqual(daten[key], f"wert_{key}")
# get_variable muss für jede Variable genau einmal aufgerufen werden
self.assertEqual(mock_get.call_count, len(SettingsLogic.VARIABLEN))
# -----------------------------------------------------
# Test: save() ruft set_variable() nur für bekannte Keys auf
# -----------------------------------------------------
@patch("sn_basis.functions.settings_logic.set_variable")
def test_save(self, mock_set):
logic = SettingsLogic()
# Eingabedaten enthalten gültige und ungültige Keys
daten = {
"amt": "A1",
"behoerde": "B1",
"unbekannt": "IGNORIEREN",
"gemeinden": "G1",
}
logic.save(daten)
# set_variable muss nur für gültige Keys aufgerufen werden
expected_calls = 3 # amt, behoerde, gemeinden
self.assertEqual(mock_set.call_count, expected_calls)
# Prüfen, ob die richtigen Keys gespeichert wurden
saved_keys = [call.args[0] for call in mock_set.call_args_list]
self.assertIn("amt", saved_keys)
self.assertIn("behoerde", saved_keys)
self.assertIn("gemeinden", saved_keys)
self.assertNotIn("unbekannt", saved_keys)
@patch("sn_basis.functions.settings_logic.get_variable")
def test_load_handles_partial_values_with_empty_fallback(self, mock_get):
values = {
"amt": "A1",
"behoerde": "",
"landkreis_user": "L1",
}
mock_get.side_effect = lambda key, scope="project": values.get(key, "")
logic = SettingsLogic()
daten = logic.load()
self.assertEqual(daten["amt"], "A1")
self.assertEqual(daten["behoerde"], "")
self.assertEqual(daten["landkreis_user"], "L1")
self.assertEqual(daten["sachgebiet"], "")
@patch("sn_basis.functions.settings_logic.set_variable")
def test_save_empty_string_value_is_persisted(self, mock_set):
logic = SettingsLogic()
logic.save({"amt": "", "behoerde": "B2"})
mock_set.assert_any_call("amt", "", scope="project")
mock_set.assert_any_call("behoerde", "B2", scope="project")
if __name__ == "__main__":
unittest.main()