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