# 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()