Tests für restliche priorisierte sn_basis-Funktionen ergänzt (#65)
79 neue Testfälle: Verfahrensgebiet-Zustandsverwaltung (Listener-Setup/ -teardown, Signal-Handler), DockManager/BaseDockWidget, pruef_ergebnis- Persistenz-Gates, Pruefmanager-Entscheidungswege, restliche Dateipruefer- Zweige, Fundament-Wrapper (sys_wrapper, ly_existence_wrapper, ly_style_wrapper.apply_style_from_path, landkreise, message_wrapper, qgiscore_wrapper.polygon_zu_linie/layer_exists_in_gpkg, qgisui_wrapper.add_layer_to_project) und SettingsTab.save_data/load_data. Ausgeklammert: LayerLoader.apply_style/ly_style_wrapper.apply_style (Bug-Verdacht, hartkodierter Fachplugin-Pfad) und Pruefmanager._ask_use_or_replace_pufferlayer (bereits als Bug in #60 erfasst: ruft nicht existierendes self.pruefmanager auf). qt_wrapper._MockQDockWidget um closeEvent() ergänzt (fehlte, ließ jede BaseDockWidget.closeEvent()-Ausführung im Mock-Modus abstürzen). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
from unittest.mock import patch
|
||||
|
||||
from sn_basis.modules.Dateipruefer import Dateipruefer
|
||||
@@ -111,6 +112,54 @@ class TestDateipruefer(unittest.TestCase):
|
||||
self.assertEqual(result.aktion, "ok")
|
||||
self.assertEqual(result.kontext, Path("/tmp/test.txt"))
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 7. erkenne_dateityp
|
||||
# -----------------------------------------------------
|
||||
def test_erkenne_dateityp_unterscheidet_excel_datenbank_und_unbekannt(self):
|
||||
"""Prüft, dass erkenne_dateityp .xlsx als 'excel', .gpkg/.sqlite als 'datenbank' und Rest als 'unbekannt' erkennt."""
|
||||
pruefer = Dateipruefer(pfad="ignoriert")
|
||||
|
||||
self.assertEqual(pruefer.erkenne_dateityp(Path("liste.xlsx")), "excel")
|
||||
self.assertEqual(pruefer.erkenne_dateityp(Path("daten.gpkg")), "datenbank")
|
||||
self.assertEqual(pruefer.erkenne_dateityp(Path("daten.sqlite")), "datenbank")
|
||||
self.assertEqual(pruefer.erkenne_dateityp(Path("text.txt")), "unbekannt")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 8. _pfad: relativ vs. absolut
|
||||
# -----------------------------------------------------
|
||||
def test_pfad_verbindet_relativen_pfad_mit_basispfad(self):
|
||||
"""Prüft, dass _pfad einen relativen Pfad mit dem Basisverzeichnis verbindet."""
|
||||
pruefer = Dateipruefer(pfad="ignoriert", basis_pfad="C:/verfahren")
|
||||
|
||||
self.assertEqual(pruefer._pfad("daten.gpkg"), Path("C:/verfahren/daten.gpkg"))
|
||||
|
||||
def test_pfad_laesst_absoluten_pfad_unveraendert(self):
|
||||
"""Prüft, dass _pfad einen bereits absoluten Pfad nicht mit dem Basisverzeichnis verbindet."""
|
||||
pruefer = Dateipruefer(pfad="ignoriert", basis_pfad="C:/verfahren")
|
||||
|
||||
self.assertEqual(pruefer._pfad("/absolut/daten.gpkg"), Path("/absolut/daten.gpkg"))
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 9. _ist_gueltiger_gpkg_pfad
|
||||
# -----------------------------------------------------
|
||||
def test_ist_gueltiger_gpkg_pfad_akzeptiert_vorhandenes_verzeichnis(self):
|
||||
"""Prüft, dass ein .gpkg-Pfad mit vorhandenem Zielverzeichnis als gültig gilt."""
|
||||
pruefer = Dateipruefer(pfad="ignoriert")
|
||||
with TemporaryDirectory() as tmp:
|
||||
self.assertTrue(pruefer._ist_gueltiger_gpkg_pfad(Path(tmp) / "verfahren.gpkg"))
|
||||
|
||||
def test_ist_gueltiger_gpkg_pfad_lehnt_falsche_endung_ab(self):
|
||||
"""Prüft, dass ein Pfad ohne .gpkg-Endung als ungültig gilt, auch bei vorhandenem Verzeichnis."""
|
||||
pruefer = Dateipruefer(pfad="ignoriert")
|
||||
with TemporaryDirectory() as tmp:
|
||||
self.assertFalse(pruefer._ist_gueltiger_gpkg_pfad(Path(tmp) / "verfahren.txt"))
|
||||
|
||||
def test_ist_gueltiger_gpkg_pfad_lehnt_fehlendes_verzeichnis_ab(self):
|
||||
"""Prüft, dass ein .gpkg-Pfad in einem nicht vorhandenen Verzeichnis als ungültig gilt."""
|
||||
pruefer = Dateipruefer(pfad="ignoriert")
|
||||
|
||||
self.assertFalse(pruefer._ist_gueltiger_gpkg_pfad(Path("C:/nicht/vorhanden/verfahren.gpkg")))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user