forked from AG_QGIS/Plugin_SN_Basis
61 lines
2.1 KiB
Python
61 lines
2.1 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)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|