Spaces:
Sleeping
Sleeping
| 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 | |