Files
pi_mcps/bigmind/tests/test_context_builder.py
T
2026-04-03 13:37:45 +02:00

88 lines
3.2 KiB
Python

"""Tests for context_builder — the bootstrapped markdown output."""
import pytest
from bigmind import memory_store
from bigmind.context_builder import build_context, _format_date
@pytest.fixture
def user():
return memory_store.get_or_create_user("ctxuser", "Context User")
class TestFormatDate:
def test_valid_iso_date(self):
assert _format_date("2026-03-30T09:15:00+00:00") == "2026-03-30"
def test_z_suffix(self):
assert _format_date("2026-03-30T00:00:00Z") == "2026-03-30"
def test_none_returns_dash(self):
assert _format_date(None) == ""
def test_empty_string_returns_dash(self):
assert _format_date("") == ""
class TestBuildContext:
def test_returns_string(self, temp_db, user):
output = build_context(user["id"])
assert isinstance(output, str)
assert len(output) > 0
def test_contains_bigmind_header(self, temp_db, user):
output = build_context(user["id"])
assert "🧠 BigMind Context" in output
def test_no_profile_shows_placeholder(self, temp_db, user):
output = build_context(user["id"])
assert "memory_update_profile" in output
def test_profile_shown_when_set(self, temp_db, user):
memory_store.upsert_identity_profile(
user["id"],
role="Principal Engineer",
preferences="Python first",
pinned_facts="- Uses uv for packages",
)
output = build_context(user["id"])
assert "Principal Engineer" in output
assert "Python first" in output
assert "Uses uv for packages" in output
def test_no_sessions_shows_placeholder(self, temp_db, user):
output = build_context(user["id"])
assert "No past sessions yet" in output
def test_closed_session_appears_in_index(self, temp_db, user):
sid = memory_store.create_session(user["id"])
memory_store.close_session(
sid, "Implemented BigMind Phase 1",
topics="mcp,sqlite", outcome="All files created"
)
output = build_context(user["id"])
assert "Implemented BigMind Phase 1" in output
assert "mcp,sqlite" in output
def test_open_session_shown_as_in_progress(self, temp_db, user):
memory_store.create_session(user["id"])
output = build_context(user["id"])
# open session MUST appear — marked as [in progress] for parallel IDE visibility
assert "in progress" in output
# but "No past sessions yet" placeholder must NOT appear
assert "No past sessions yet" not in output
def test_tier2_hint_shown_for_sessions_with_summary(self, temp_db, user):
sid = memory_store.create_session(user["id"])
memory_store.close_session(sid, "Session with summary")
memory_store.save_session_summary(sid, "Full narrative here")
output = build_context(user["id"])
assert "📄" in output
def test_respects_n_sessions_limit(self, temp_db, user):
for i in range(15):
sid = memory_store.create_session(user["id"])
memory_store.close_session(sid, f"Session {i}")
output = build_context(user["id"], n_sessions=5)
assert "last 5" in output