test: verify and document desktop ui
This commit is contained in:
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user