from __future__ import annotations from unittest.mock import MagicMock class _Var: def __init__(self, value: str = ""): self._value = value def get(self): return self._value def set(self, value): self._value = value def test_db_rescan_registry_status_after_init_schedules_multiple_checks(): from knoe.ui.screens.database import DatabaseScreenMixin class _Dummy(DatabaseScreenMixin): def __init__(self): self._scheduled: list[int] = [] self._ensure_called = 0 self._db_registry_status_label = 1 self.bg_canvas = MagicMock() def safe_after(self, fn, delay: int = 0): self._scheduled.append(delay) if delay == 0: return fn() return None def _ensure_db_build_registry_async(self): self._ensure_called += 1 d = _Dummy() d._db_rescan_registry_status_after_init() # One immediate label update (delay 0), then a sequence of scheduled checks. assert d._scheduled == [0, 0, 1000, 2000, 4000, 8000, 15000] assert d._ensure_called == 1 def test_sync_namespace_suffix_from_full_is_safe_without_suffix_var(): from knoe.ui.screens.database import DatabaseScreenMixin class _Dummy(DatabaseScreenMixin): def __init__(self): self.db_namespace = _Var("knoe-db") d = _Dummy() d._sync_namespace_suffix_from_full() assert d.db_namespace.get() == "knoe-db" def test_sync_namespace_suffix_from_full_updates_suffix_var_when_present(): from knoe.ui.screens.database import DatabaseScreenMixin class _Dummy(DatabaseScreenMixin): def __init__(self): self.db_namespace = _Var("knoe-db") self.db_namespace_suffix = _Var("") d = _Dummy() d._sync_namespace_suffix_from_full() assert d.db_namespace_suffix.get() == "db"