Files
aza/AzA march 2026/_test_chat_contacts_and_mini_diktat.py
2026-06-13 22:47:31 +02:00

117 lines
4.1 KiB
Python

# -*- coding: utf-8 -*-
"""Tests: Chat-Kontaktpanel-Start + Mini-Diktat."""
from __future__ import annotations
import inspect
import unittest
class TestChatKontaktStartPath(unittest.TestCase):
_APP_CLS = None
@classmethod
def setUpClass(cls):
import basis14
for name in dir(basis14):
obj = getattr(basis14, name)
if isinstance(obj, type) and hasattr(obj, "_send_to_empfang"):
cls._APP_CLS = obj
break
if cls._APP_CLS is None:
raise unittest.SkipTest("Desktop-App-Klasse in basis14 nicht gefunden")
def test_send_to_empfang_resolves_user_before_open(self):
src = inspect.getsource(self._APP_CLS._send_to_empfang)
self.assertIn("_empfang_self_user_id_resolve_now", src)
self.assertIn("_sync_desktop_profile_from_empfang_metadata", src)
self.assertIn("_prepare_empfang_prefs_for_webview", src)
def test_kontakt_spawn_delayed_after_shell(self):
src = inspect.getsource(self._APP_CLS._empfang_open_webview_singleton)
self.assertIn("after(1500, self._maybe_autostart_kontakt_panel)", src)
infl_block = src.split('skip_reason="launch_inflight"', 1)[1].split(
"self._empfang_webview_launch_inflight_until = 0.0", 1
)[0]
self.assertNotIn("_maybe_autostart_kontakt_panel", infl_block)
def test_kontakt_inflight_grace_tightened(self):
src = inspect.getsource(self._APP_CLS._kontakt_panel_subprocess_alive)
self.assertIn("empty_grace_s=6.0", src)
def test_kontakt_alive_nudges_peer_refresh(self):
src = inspect.getsource(self._APP_CLS._maybe_autostart_kontakt_panel)
self.assertIn("touch_shell_peer_refresh_signal", src)
self.assertIn("empty_grace_s=6.0", src)
class TestMiniDiktatWindow(unittest.TestCase):
def test_module_exports(self):
import aza_mini_diktat_window as md
for name in (
"open_mini_diktat_window",
"close_mini_diktat_window",
"sync_mini_diktat_window",
"is_mini_diktat_window_open",
):
self.assertTrue(callable(getattr(md, name, None)), msg=name)
def test_uses_logo3(self):
import aza_mini_diktat_window as md
self.assertIn("Logo3.png", md._LOGO_CANDIDATES)
def test_restore_tool_window_helper(self):
import aza_ui_helpers
self.assertTrue(hasattr(aza_ui_helpers, "restore_tool_window_at_cursor"))
src = inspect.getsource(aza_ui_helpers.restore_tool_window_at_cursor)
self.assertIn("_mini_restore_geometry", src)
self.assertIn("_tool_pinned", src)
def test_diktat_mixin_has_mini_button(self):
import aza_diktat_mixin
src = inspect.getsource(aza_diktat_mixin.AzaDiktatMixin.open_diktat_window)
self.assertIn("open_mini_diktat_window", src)
self.assertIn("btn_mini_diktat", src)
self.assertIn("Mini-Diktat", src)
self.assertIn("_aza_diktat_toggle", src)
self.assertIn("add_tool_pin_button", src)
def test_mini_diktat_same_size_as_main_mini(self):
import aza_mini_diktat_window as md
import aza_mini_record_window as mr
self.assertEqual(md._MINI_WIN_W, mr._MINI_WIN_W)
self.assertEqual(md._MINI_WIN_H, mr._MINI_WIN_H)
def test_mini_diktat_has_korrigieren_and_status(self):
import aza_mini_diktat_window as md
src = inspect.getsource(md.open_mini_diktat_window)
self.assertIn("_aza_diktat_korrigieren", src)
self.assertIn("sync_mini_diktat_window", src)
self.assertIn("_aza_diktat_toggle", src)
self.assertIn("withdraw", src)
def test_diktat_close_clears_mini(self):
import aza_diktat_mixin
src = inspect.getsource(aza_diktat_mixin.AzaDiktatMixin.open_diktat_window)
self.assertIn("close_mini_diktat_window", src)
class TestMainMiniUnchanged(unittest.TestCase):
def test_main_mini_still_uses_restore_main(self):
import aza_mini_record_window as mr
src = inspect.getsource(mr._restore_main_window)
self.assertIn("restore_main_window_at_cursor", src)
if __name__ == "__main__":
unittest.main()