feat: improve session navigation
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import sqlite3
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
@@ -167,6 +168,76 @@ class CliTests(unittest.TestCase):
|
||||
)
|
||||
self.assertIn("Gemini-Schlüssel vorhanden: ja", output)
|
||||
|
||||
def test_numbered_sessions_load_rename_and_search(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
store = SQLiteSessionStore(Path(directory) / "sessions.sqlite3")
|
||||
service = ChatService(store, _FakeProvider())
|
||||
first = service.new_session()
|
||||
service.send(first.id, "Erste Frage")
|
||||
second = service.new_session()
|
||||
service.send(second.id, "Zweite Frage")
|
||||
shown_before = service.list_sessions()
|
||||
target = shown_before[1]
|
||||
inputs = iter(
|
||||
[
|
||||
"/sessions",
|
||||
"/load 2",
|
||||
"/rename Gefundene Sitzung",
|
||||
"/search Gefundene",
|
||||
"/exit",
|
||||
]
|
||||
)
|
||||
output: list[str] = []
|
||||
|
||||
result = run_chat(
|
||||
service,
|
||||
session_id=first.id,
|
||||
input_fn=lambda _prompt: next(inputs),
|
||||
output=output.append,
|
||||
)
|
||||
renamed_title = store.get_session(target.id).title
|
||||
|
||||
self.assertEqual(result, 0)
|
||||
self.assertTrue(any(line.startswith("1. ") and "Frage" in line for line in output))
|
||||
self.assertIn(f"Sitzung geladen: {target.id}", output)
|
||||
self.assertEqual(renamed_title, "Gefundene Sitzung")
|
||||
self.assertTrue(any("Gefundene Sitzung" in line for line in output))
|
||||
|
||||
def test_load_accepts_unique_prefix_and_rejects_ambiguous_prefix(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
database = Path(directory) / "sessions.sqlite3"
|
||||
store = SQLiteSessionStore(database)
|
||||
service = ChatService(store, _FakeProvider())
|
||||
active = service.new_session()
|
||||
with sqlite3.connect(database) as connection:
|
||||
connection.executemany(
|
||||
"""
|
||||
INSERT INTO sessions
|
||||
(id, created_at, updated_at, provider, model, title, last_provider)
|
||||
VALUES (?, '2026-01-01', '2026-01-01',
|
||||
'ollama', 'test-model', ?, 'ollama')
|
||||
""",
|
||||
(
|
||||
("shared-111", "Eins"),
|
||||
("shared-222", "Zwei"),
|
||||
("unique-333", "Drei"),
|
||||
),
|
||||
)
|
||||
connection.close()
|
||||
inputs = iter(["/load unique", "/load shared", "/exit"])
|
||||
output: list[str] = []
|
||||
|
||||
result = run_chat(
|
||||
service,
|
||||
session_id=active.id,
|
||||
input_fn=lambda _prompt: next(inputs),
|
||||
output=output.append,
|
||||
)
|
||||
|
||||
self.assertEqual(result, 0)
|
||||
self.assertIn("Sitzung geladen: unique-333", output)
|
||||
self.assertTrue(any("nicht eindeutig" in line for line in output))
|
||||
|
||||
def test_gemini_configuration_defaults_to_no(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "javis.toml"
|
||||
|
||||
Reference in New Issue
Block a user