50 lines
2.0 KiB
Python
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()
|