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>
55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
"""Tests für sn_basis/functions/ly_style_wrapper.py::apply_style_from_path (Issue #65).
|
|
|
|
`apply_style` bleibt ausgeklammert: hardcodiert 'sn_verfahrensgebiet' in platformneutralem
|
|
sn_basis-Code (mutmaßlicher Bug, siehe docs/tests/testkatalog.md und Issue-Historie #63).
|
|
"""
|
|
|
|
import unittest
|
|
|
|
from sn_basis.functions.ly_style_wrapper import apply_style_from_path
|
|
|
|
|
|
class _FakeLayer:
|
|
def __init__(self, ergebnis=(True, ""), wirft_fehler: bool = False) -> None:
|
|
self._ergebnis = ergebnis
|
|
self._wirft_fehler = wirft_fehler
|
|
self.repaint_aufgerufen = False
|
|
|
|
def loadNamedStyle(self, path: str):
|
|
if self._wirft_fehler:
|
|
raise RuntimeError("kaputt")
|
|
return self._ergebnis
|
|
|
|
def triggerRepaint(self) -> None:
|
|
self.repaint_aufgerufen = True
|
|
|
|
|
|
class ApplyStyleFromPathTests(unittest.TestCase):
|
|
def test_fehlender_layer_liefert_false(self):
|
|
"""Prüft, dass ein fehlender Layer (None) False liefert, ohne einen Stil zu laden."""
|
|
self.assertFalse(apply_style_from_path(None, "stil.qml"))
|
|
|
|
def test_erfolgreiches_laden_liefert_true_und_triggert_repaint(self):
|
|
"""Prüft, dass ein erfolgreich geladener Stil True liefert und den Layer neu zeichnet."""
|
|
layer = _FakeLayer(ergebnis=(True, ""))
|
|
|
|
self.assertTrue(apply_style_from_path(layer, "stil.qml"))
|
|
self.assertTrue(layer.repaint_aufgerufen)
|
|
|
|
def test_fehlgeschlagenes_laden_liefert_false_ohne_repaint(self):
|
|
"""Prüft, dass ein fehlgeschlagenes Laden False liefert, ohne den Layer neu zu zeichnen."""
|
|
layer = _FakeLayer(ergebnis=(False, "ungültiges QML"))
|
|
|
|
self.assertFalse(apply_style_from_path(layer, "stil.qml"))
|
|
self.assertFalse(layer.repaint_aufgerufen)
|
|
|
|
def test_ausnahme_beim_laden_wird_abgefangen(self):
|
|
"""Prüft, dass eine Ausnahme beim Laden des Stils abgefangen wird und False liefert."""
|
|
layer = _FakeLayer(wirft_fehler=True)
|
|
|
|
self.assertFalse(apply_style_from_path(layer, "stil.qml"))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|