Files
Plugin_SN_Basis/tests/test_ly_style_wrapper.py
T
DanielandClaude Sonnet 5 7ce820581f 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>
2026-09-18 11:20:10 +02:00

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