test: verify and document desktop ui

This commit is contained in:
2026-07-30 20:26:03 +02:00
parent cf35148576
commit 571969b69b
15 changed files with 369 additions and 28 deletions
+23 -1
View File
@@ -8,7 +8,7 @@ from types import SimpleNamespace
from javis.core.chat_service import ChatService
from javis.memory.sqlite_store import SQLiteSessionStore
from javis.providers.base import ChatMessage
from javis.providers.base import ChatMessage, ResponseAbortedError
from javis.ui.chat_controller import DesktopController, sanitized_error
from javis.ui.models import GenerationState, StreamEventKind
@@ -64,6 +64,12 @@ class _StreamingProvider:
self.mode = mode
class _AbortingProvider(_StreamingProvider):
def stream_chat(self, _messages):
raise ResponseAbortedError("Vom Dialog abgebrochen")
yield
class DesktopControllerTests(unittest.TestCase):
def setUp(self) -> None:
self.runtime = SimpleNamespace(
@@ -131,3 +137,19 @@ class DesktopControllerTests(unittest.TestCase):
self.assertEqual(events[-1].state, GenerationState.ABORTED)
session = service.list_sessions()[0]
self.assertEqual(service.load_session(session.id).messages, [])
def test_provider_abort_is_reported_as_aborted_not_error(self) -> None:
with tempfile.TemporaryDirectory() as directory:
provider = _AbortingProvider()
service = ChatService(
SQLiteSessionStore(Path(directory) / "sessions.sqlite3"),
provider,
)
controller = DesktopController(
SimpleNamespace(service=service, hybrid_provider=provider)
)
events = list(controller.stream_message("Hallo", threading.Event()))
self.assertEqual(events[-1].state, GenerationState.ABORTED)
self.assertNotIn(StreamEventKind.ERROR, [event.kind for event in events])