forked from AG_QGIS/Plugin_SN_Basis
135 lines
5.9 KiB
Python
135 lines
5.9 KiB
Python
# 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.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.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.pfad, "/tmp/std.txt")
|
|
|
|
# -----------------------------------------------------
|
|
# 5. Standarddatei vorschlagen → Nutzer sagt NEIN
|
|
# -----------------------------------------------------
|
|
@patch("sn_basis.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.ask_yes_no", return_value=True)
|
|
@patch("sn_basis.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.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.functions.qgisqt_wrapper.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()
|