Files
odysseus/tests/test_sessions_cli.py
red person df3864bd15 Normalize session CLI counters (#1578)
* Normalize session CLI counters

* Keep sessions CLI test imports isolated
2026-06-03 08:57:41 +09:00

49 lines
1.4 KiB
Python

import importlib.machinery
import importlib.util
import sys
from pathlib import Path
from types import ModuleType
from types import SimpleNamespace
def _load_sessions_cli(monkeypatch):
core_mod = ModuleType("core")
database_mod = ModuleType("core.database")
database_mod.SessionLocal = object
database_mod.Session = object
monkeypatch.setitem(sys.modules, "core", core_mod)
monkeypatch.setitem(sys.modules, "core.database", database_mod)
path = Path(__file__).resolve().parent.parent / "scripts" / "odysseus-sessions"
loader = importlib.machinery.SourceFileLoader("odysseus_sessions_cli_under_test", str(path))
spec = importlib.util.spec_from_loader(loader.name, loader)
module = importlib.util.module_from_spec(spec)
loader.exec_module(module)
return module
def test_serialize_normalizes_numeric_counters(monkeypatch):
cli = _load_sessions_cli(monkeypatch)
session = SimpleNamespace(
id="s1",
name="chat",
model="m",
endpoint_url="",
owner=None,
folder=None,
archived=False,
rag=False,
is_important=False,
message_count="12",
total_input_tokens="bad",
total_output_tokens=None,
last_accessed=None,
created_at=None,
)
out = cli._serialize(session)
assert out["message_count"] == 12
assert out["total_input_tokens"] == 0
assert out["total_output_tokens"] == 0