37 neue Testfälle für die 31 verbleibenden "vielleicht testen"- Funktionen: os_wrapper.is_case_sensitive_fs, qgiscore_wrapper. create_buffer_layer (nur die Wächter, echte Pufferlogik importiert qgis.core direkt), qgisui_wrapper.find_dock_widgets/add_menu/remove_menu, DataGrabber._aggregate_results, pruef_ergebnis.dateipfad, Navigation (add_action, finalize_menu_and_toolbar, set_active_plugin, remove_action, remove_all), SettingsTab._build_input und PrintTab (18 Methoden: Zustandslogik, Signal-Handling, Atlas-/Theme-Verwaltung). PrintTab._build_ui bekommt stattdessen den Vermerk "von Test abgesehen, weil vernachlässigbar; HD 18.09.2026" - reine Qt-Widget-Konstruktion ohne eigenständig prüfbare Logik. Damit ist die Kategorie "vielleicht testen" für sn_basis aufgelöst: jede Funktion ist jetzt getestet oder mit einem begründeten Vermerk versehen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
3.0 KiB
Python
63 lines
3.0 KiB
Python
"""Tests für sn_basis/modules/pruef_ergebnis.py::ist_verfahrens_db_aktion/erlaubte_persistierung/dateipfad (Issue #65/#67)."""
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
|
|
|
|
|
|
class IstVerfahrensDbAktionTests(unittest.TestCase):
|
|
def test_liefert_true_fuer_alle_verfahrens_db_aktionen(self):
|
|
"""Prüft, dass ist_verfahrens_db_aktion für alle vier Verfahrens-DB-Aktionscodes True liefert."""
|
|
for aktion in (
|
|
"datei_wird_erzeugt",
|
|
"datei_existiert",
|
|
"datei_existiert_ueberschreiben",
|
|
"datei_existiert_anhaengen",
|
|
"datei_existiert_ueberspringen",
|
|
):
|
|
with self.subTest(aktion=aktion):
|
|
ergebnis = pruef_ergebnis(ok=True, aktion=aktion)
|
|
self.assertTrue(ergebnis.ist_verfahrens_db_aktion)
|
|
|
|
def test_liefert_false_fuer_andere_aktionen(self):
|
|
"""Prüft, dass ist_verfahrens_db_aktion für Nicht-Verfahrens-DB-Aktionen und ohne Aktion False liefert."""
|
|
for aktion in ("ok", "datenabruf", None):
|
|
with self.subTest(aktion=aktion):
|
|
ergebnis = pruef_ergebnis(ok=True, aktion=aktion)
|
|
self.assertFalse(ergebnis.ist_verfahrens_db_aktion)
|
|
|
|
|
|
class ErlaubtePersistierungTests(unittest.TestCase):
|
|
def test_liefert_true_fuer_erzeugen_ueberschreiben_anhaengen(self):
|
|
"""Prüft, dass erlaubte_persistierung für Erzeugen/Überschreiben/Anhängen True liefert."""
|
|
for aktion in ("datei_wird_erzeugt", "datei_existiert_ueberschreiben", "datei_existiert_anhaengen"):
|
|
with self.subTest(aktion=aktion):
|
|
ergebnis = pruef_ergebnis(ok=True, aktion=aktion)
|
|
self.assertTrue(ergebnis.erlaubte_persistierung)
|
|
|
|
def test_liefert_false_fuer_ueberspringen_und_reines_existieren(self):
|
|
"""Prüft, dass erlaubte_persistierung bei Überspringen und reinem 'datei_existiert' False liefert."""
|
|
for aktion in ("datei_existiert_ueberspringen", "datei_existiert", "ok", None):
|
|
with self.subTest(aktion=aktion):
|
|
ergebnis = pruef_ergebnis(ok=True, aktion=aktion)
|
|
self.assertFalse(ergebnis.erlaubte_persistierung)
|
|
|
|
|
|
class DateipfadTests(unittest.TestCase):
|
|
def test_liefert_path_wenn_kontext_ein_path_ist(self):
|
|
"""Prüft, dass dateipfad den Kontext liefert, wenn dieser bereits ein Path-Objekt ist."""
|
|
ergebnis = pruef_ergebnis(ok=True, kontext=Path("C:/tmp/verfahren.gpkg"))
|
|
|
|
self.assertEqual(ergebnis.dateipfad, Path("C:/tmp/verfahren.gpkg"))
|
|
|
|
def test_liefert_none_wenn_kontext_kein_path_ist(self):
|
|
"""Prüft, dass dateipfad None liefert, wenn der Kontext kein Path-Objekt ist (z. B. String oder Layer)."""
|
|
self.assertIsNone(pruef_ergebnis(ok=True, kontext="C:/tmp/verfahren.gpkg").dateipfad)
|
|
self.assertIsNone(pruef_ergebnis(ok=True, kontext=None).dateipfad)
|
|
self.assertIsNone(pruef_ergebnis(ok=True, kontext=object()).dateipfad)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|