Files
pi_mcps/mcp/bigmind/tests/test_context_builder.py
Patrick Plate 155d56e8e8 chore: reorganize into polyglot monorepo (workshop)
- Move bigmind/ -> mcp/bigmind/
- Move webscraper/ -> mcp/webscraper/
- Move mss-failsafe/ -> java/mss-failsafe/
- Move Wellmann-Shop/ -> java/wellmann-shop/ (normalize to kebab-case)
- Add .roo/ IDE config files to tracking
- Add plans/REPO_STRATEGY.md (monorepo strategy document)
- Expand .gitignore: Java/Maven, Node/TS, coverage, uv.lock
- Rewrite README.md as navigation index
- Update .roo/mcp.json webscraper path to mcp/webscraper/
2026-04-04 08:51:15 +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