41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from javis.core.chat_service import ChatService
|
|
from javis.interface.cli import run_chat
|
|
from javis.memory.sqlite_store import SQLiteSessionStore
|
|
from javis.providers.base import ChatMessage
|
|
|
|
|
|
class _FakeProvider:
|
|
name = "ollama"
|
|
model = "test-model"
|
|
|
|
def chat(self, messages: list[ChatMessage]) -> str:
|
|
return f"Echo: {messages[-1].content}"
|
|
|
|
|
|
class CliTests(unittest.TestCase):
|
|
def test_basic_chat_commands(self) -> None:
|
|
with tempfile.TemporaryDirectory() as directory:
|
|
store = SQLiteSessionStore(Path(directory) / "sessions.sqlite3")
|
|
service = ChatService(store, _FakeProvider())
|
|
inputs = iter(["Hallo", "/sessions", "/new", "/clear", "/exit"])
|
|
output: list[str] = []
|
|
|
|
result = run_chat(
|
|
service,
|
|
input_fn=lambda _prompt: next(inputs),
|
|
output=output.append,
|
|
)
|
|
|
|
self.assertEqual(result, 0)
|
|
self.assertTrue(any(line == "Javis: Echo: Hallo" for line in output))
|
|
self.assertTrue(any("Nachrichten" in line for line in output))
|
|
self.assertEqual(output[-1], "Chat beendet.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|