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()