41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from javis.core.chat_service import ChatService
|
|
from javis.memory.sqlite_store import SQLiteSessionStore
|
|
from javis.providers.base import ChatMessage
|
|
|
|
|
|
class _CompatibleHybrid:
|
|
name = "hybrid"
|
|
model = "auto"
|
|
|
|
def chat(self, messages: list[ChatMessage]) -> str:
|
|
return "Antwort"
|
|
|
|
def supports_session(self, provider: str, model: str) -> bool:
|
|
return (provider, model) in {
|
|
("hybrid", "auto"),
|
|
("ollama", "qwen3:8b"),
|
|
}
|
|
|
|
|
|
class HybridChatServiceTests(unittest.TestCase):
|
|
def test_old_local_session_remains_loadable_after_hybrid_upgrade(self) -> None:
|
|
with tempfile.TemporaryDirectory() as temporary_directory:
|
|
store = SQLiteSessionStore(Path(temporary_directory) / "sessions.sqlite3")
|
|
old_session = store.create_session("ollama", "qwen3:8b")
|
|
store.append_exchange(old_session.id, "Alt", "Verlauf")
|
|
service = ChatService(store, _CompatibleHybrid())
|
|
|
|
loaded = service.load_session(old_session.id)
|
|
|
|
self.assertEqual([message.content for message in loaded.messages], ["Alt", "Verlauf"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|