Files
Plugin_SN_Basis/tests/test_message_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

50 lines
2.0 KiB
Python

"""Tests für sn_basis/functions/message_wrapper.py (Issue #65)."""
import unittest
from unittest.mock import patch
from sn_basis.functions import message_wrapper
class GetMessageBarTests(unittest.TestCase):
def test_liefert_objekt_mit_pushmessage_methode(self):
"""Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert."""
bar = message_wrapper._get_message_bar()
self.assertTrue(callable(getattr(bar, "pushMessage", None)))
def test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck(self):
"""Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt."""
class _KaputterIface:
def messageBar(self):
raise RuntimeError("keine Message-Bar verfügbar")
with patch.object(message_wrapper, "iface", _KaputterIface()):
bar = message_wrapper._get_message_bar()
ergebnis = bar.pushMessage("Titel", "Text")
self.assertEqual(ergebnis["title"], "Titel")
class PushMessageTests(unittest.TestCase):
def test_liefert_dict_mit_titel_text_level_und_dauer(self):
"""Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert."""
ergebnis = message_wrapper.push_message(2, "Titel", "Text", duration=7)
self.assertEqual(ergebnis, {"title": "Titel", "text": "Text", "level": 2, "duration": 7})
def test_fehler_in_der_message_bar_wird_abgefangen(self):
"""Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert."""
class _KaputteMessageBar:
def pushMessage(self, *args, **kwargs):
raise RuntimeError("kaputt")
with patch.object(message_wrapper, "_get_message_bar", return_value=_KaputteMessageBar()):
ergebnis = message_wrapper.push_message(0, "Titel", "Text")
self.assertIsNone(ergebnis)
if __name__ == "__main__":
unittest.main()