# sn_basis/test/test_pruefmanager.py import unittest from unittest.mock import patch from sn_basis.modules.Pruefmanager import Pruefmanager from sn_basis.modules.pruef_ergebnis import pruef_ergebnis class TestPruefmanager(unittest.TestCase): def setUp(self): self.manager = Pruefmanager() # ----------------------------------------------------- # 1. OK-Ergebnis → keine Interaktion # ----------------------------------------------------- def test_ok(self): ergebnis = pruef_ergebnis(True, "Alles gut", "ok", None) entscheidung = self.manager.verarbeite(ergebnis) self.assertTrue(entscheidung.ok) self.assertEqual(entscheidung.aktion, "ok") # ----------------------------------------------------- # 2. Leere Eingabe erlaubt → Nutzer sagt JA # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=True) def test_leereingabe_erlaubt_ja(self, mock_ask): ergebnis = pruef_ergebnis(False, "Leer?", "leereingabe_erlaubt", None) entscheidung = self.manager.verarbeite(ergebnis) self.assertTrue(entscheidung.ok) self.assertEqual(entscheidung.aktion, "ok") # ----------------------------------------------------- # 3. Leere Eingabe erlaubt → Nutzer sagt NEIN # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=False) def test_leereingabe_erlaubt_nein(self, mock_ask): ergebnis = pruef_ergebnis(False, "Leer?", "leereingabe_erlaubt", None) entscheidung = self.manager.verarbeite(ergebnis) self.assertFalse(entscheidung.ok) self.assertEqual(entscheidung.aktion, "leereingabe_erlaubt") # ----------------------------------------------------- # 4. Standarddatei vorschlagen → Nutzer sagt JA # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=True) def test_standarddatei_vorschlagen_ja(self, mock_ask): ergebnis = pruef_ergebnis( False, "Standarddatei verwenden?", "standarddatei_vorschlagen", "/tmp/std.txt", ) entscheidung = self.manager.verarbeite(ergebnis) self.assertTrue(entscheidung.ok) self.assertEqual(entscheidung.aktion, "ok") self.assertEqual(entscheidung.kontext, "/tmp/std.txt") # ----------------------------------------------------- # 5. Standarddatei vorschlagen → Nutzer sagt NEIN # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=False) def test_standarddatei_vorschlagen_nein(self, mock_ask): ergebnis = pruef_ergebnis( False, "Standarddatei verwenden?", "standarddatei_vorschlagen", "/tmp/std.txt", ) entscheidung = self.manager.verarbeite(ergebnis) self.assertFalse(entscheidung.ok) self.assertEqual(entscheidung.aktion, "standarddatei_vorschlagen") # ----------------------------------------------------- # 6. Temporäre Datei erzeugen → Nutzer sagt JA # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=True) def test_temporaer_erlaubt_ja(self, mock_ask): ergebnis = pruef_ergebnis(False, "Temporär?", "temporaer_erlaubt", None) entscheidung = self.manager.verarbeite(ergebnis) self.assertTrue(entscheidung.ok) self.assertEqual(entscheidung.aktion, "temporaer_erzeugen") # ----------------------------------------------------- # 7. Temporäre Datei erzeugen → Nutzer sagt NEIN # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=False) def test_temporaer_erlaubt_nein(self, mock_ask): ergebnis = pruef_ergebnis(False, "Temporär?", "temporaer_erlaubt", None) entscheidung = self.manager.verarbeite(ergebnis) self.assertFalse(entscheidung.ok) self.assertEqual(entscheidung.aktion, "temporaer_erlaubt") # ----------------------------------------------------- # 8. Layer unsichtbar → Nutzer sagt JA # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=True) @patch("sn_basis.modules.Pruefmanager.set_layer_visible") def test_layer_unsichtbar_ja(self, mock_set, mock_ask): fake_layer = object() ergebnis = pruef_ergebnis(False, "Layer unsichtbar", "layer_unsichtbar", fake_layer) entscheidung = self.manager.verarbeite(ergebnis) mock_set.assert_called_once_with(fake_layer, True) self.assertTrue(entscheidung.ok) self.assertEqual(entscheidung.aktion, "ok") # ----------------------------------------------------- # 9. Layer unsichtbar → Nutzer sagt NEIN # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.ask_yes_no", return_value=False) def test_layer_unsichtbar_nein(self, mock_ask): fake_layer = object() ergebnis = pruef_ergebnis(False, "Layer unsichtbar", "layer_unsichtbar", fake_layer) entscheidung = self.manager.verarbeite(ergebnis) self.assertFalse(entscheidung.ok) self.assertEqual(entscheidung.aktion, "layer_unsichtbar") # ----------------------------------------------------- # 10. Fehlerhafte Aktion → Fallback # ----------------------------------------------------- @patch("sn_basis.modules.Pruefmanager.warning") def test_unbekannte_aktion(self, mock_warn): ergebnis = pruef_ergebnis(False, "???", "unbekannt", None) entscheidung = self.manager.verarbeite(ergebnis) mock_warn.assert_called_once() self.assertFalse(entscheidung.ok) self.assertEqual(entscheidung.aktion, "unbekannt") if __name__ == "__main__": unittest.main()