acb / tests /test_context_manager.py
Kagan Tek
merge
79d4fd5
Raw
History Blame Contribute Delete
3.46 kB
import pytest
from integration.context_manager import (
ContextManager,
get_context_manager,
reset_context_manager,
MAX_HISTORY_MESSAGES,
)
class TestCreditFileIdTracking:
def setup_method(self):
self.cm = ContextManager()
def test_initially_none(self):
assert self.cm.get_active_credit_file_id() is None
def test_set_and_get(self):
self.cm.set_active_credit_file_id("26000046")
assert self.cm.get_active_credit_file_id() == "26000046"
def test_strips_whitespace(self):
self.cm.set_active_credit_file_id(" 26000046 ")
assert self.cm.get_active_credit_file_id() == "26000046"
def test_ignores_empty_string(self):
self.cm.set_active_credit_file_id("26000046")
self.cm.set_active_credit_file_id("")
assert self.cm.get_active_credit_file_id() == "26000046"
def test_ignores_none(self):
self.cm.set_active_credit_file_id("26000046")
self.cm.set_active_credit_file_id(None)
assert self.cm.get_active_credit_file_id() == "26000046"
def test_updates_to_new_id(self):
self.cm.set_active_credit_file_id("26000046")
self.cm.set_active_credit_file_id("99999999")
assert self.cm.get_active_credit_file_id() == "99999999"
class TestPrepareContext:
def setup_method(self):
self.cm = ContextManager()
def test_empty_history(self):
result = self.cm.prepare_context("test", [])
assert result["chat_history"] == []
assert result["resolved_query"] == "test"
def test_trims_to_max(self):
history = [{"role": "user", "content": f"msg {i}"} for i in range(20)]
result = self.cm.prepare_context("q", history)
assert len(result["chat_history"]) == MAX_HISTORY_MESSAGES
def test_keeps_all_when_under_max(self):
history = [{"role": "user", "content": f"msg {i}"} for i in range(5)]
result = self.cm.prepare_context("q", history)
assert len(result["chat_history"]) == 5
def test_keeps_most_recent(self):
history = [{"role": "user", "content": f"msg {i}"} for i in range(15)]
result = self.cm.prepare_context("q", history)
last_content = result["chat_history"][-1]["content"]
assert last_content == "msg 14"
def test_metadata_present(self):
result = self.cm.prepare_context("q", [{"role": "user", "content": "x"}])
assert "metadata" in result
assert result["metadata"]["filtering_method"] == "recent_window"
assert result["metadata"]["kept"] == 1
def test_none_history_treated_as_empty(self):
result = self.cm.prepare_context("q", None)
assert result["chat_history"] == []
def test_intent_param_accepted(self):
result = self.cm.prepare_context("q", [], intent="database_query")
assert result["resolved_query"] == "q"
class TestSingleton:
def setup_method(self):
reset_context_manager()
def teardown_method(self):
reset_context_manager()
def test_returns_instance(self):
cm = get_context_manager()
assert isinstance(cm, ContextManager)
def test_returns_same_instance(self):
cm1 = get_context_manager()
cm2 = get_context_manager()
assert cm1 is cm2
def test_reset_creates_new(self):
cm1 = get_context_manager()
reset_context_manager()
cm2 = get_context_manager()
assert cm1 is not cm2