Files
pi_mcps/mcp/bigmind/tests/test_people.py
T
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

117 lines
4.7 KiB
Python

"""Tests for BigMind people/contacts directory (v3.0 — schema v7)."""
import pytest
from bigmind import memory_store
@pytest.fixture
def user(temp_db):
return memory_store.get_or_create_user("testuser", "Test User")
class TestRememberPerson:
def test_insert_minimal(self, temp_db, user):
pid = memory_store.upsert_person(user["id"], "elias")
assert pid > 0
def test_insert_full(self, temp_db, user):
pid = memory_store.upsert_person(
user["id"], "elias",
display_name="Elias Müller",
role="Engineer",
team="PI",
notes="Shared BigMind with him",
bigmind_user="elias",
bigmind_url="http://localhost:7701",
)
people = memory_store.list_people(user["id"])
assert len(people) == 1
p = people[0]
assert p["display_name"] == "Elias Müller"
assert p["bigmind_user"] == "elias"
assert p["bigmind_url"] == "http://localhost:7701"
def test_upsert_updates_existing(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias", role="Intern")
memory_store.upsert_person(user["id"], "elias", role="Engineer")
people = memory_store.list_people(user["id"])
assert len(people) == 1
assert people[0]["role"] == "Engineer"
def test_upsert_preserves_unset_fields(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias", notes="First note")
memory_store.upsert_person(user["id"], "elias", role="Engineer")
people = memory_store.list_people(user["id"])
assert people[0]["notes"] == "First note"
assert people[0]["role"] == "Engineer"
def test_different_users_isolated(self, temp_db):
u1 = memory_store.get_or_create_user("alice")
u2 = memory_store.get_or_create_user("bob")
memory_store.upsert_person(u1["id"], "elias")
assert memory_store.list_people(u2["id"]) == []
class TestRecallPerson:
def test_search_by_name(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias", display_name="Elias Müller")
memory_store.upsert_person(user["id"], "klaus", display_name="Klaus Schmidt")
results = memory_store.recall_person(user["id"], "elias")
assert len(results) == 1
assert results[0]["username"] == "elias"
def test_search_by_role(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias", role="Frontend Engineer")
memory_store.upsert_person(user["id"], "oliver", role="Backend Engineer")
results = memory_store.recall_person(user["id"], "Frontend")
assert len(results) == 1
assert results[0]["username"] == "elias"
def test_search_by_notes(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias", notes="token efficiency idea")
results = memory_store.recall_person(user["id"], "token")
assert len(results) == 1
def test_no_results(self, temp_db, user):
results = memory_store.recall_person(user["id"], "nobody")
assert results == []
def test_search_isolated_by_user(self, temp_db):
u1 = memory_store.get_or_create_user("alice")
u2 = memory_store.get_or_create_user("bob")
memory_store.upsert_person(u1["id"], "elias", role="Engineer")
results = memory_store.recall_person(u2["id"], "Engineer")
assert results == []
class TestListPeople:
def test_empty(self, temp_db, user):
assert memory_store.list_people(user["id"]) == []
def test_returns_all(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias")
memory_store.upsert_person(user["id"], "klaus")
memory_store.upsert_person(user["id"], "oliver")
assert len(memory_store.list_people(user["id"])) == 3
class TestLinkAI:
def test_link_existing_person(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias")
result = memory_store.link_ai(user["id"], "elias", "elias_ai", "http://localhost:7701")
assert result is True
people = memory_store.list_people(user["id"])
assert people[0]["bigmind_user"] == "elias_ai"
assert people[0]["bigmind_url"] == "http://localhost:7701"
def test_link_nonexistent_person(self, temp_db, user):
result = memory_store.link_ai(user["id"], "ghost", "ghost_ai")
assert result is False
def test_link_without_url(self, temp_db, user):
memory_store.upsert_person(user["id"], "elias")
result = memory_store.link_ai(user["id"], "elias", "elias_ai")
assert result is True
people = memory_store.list_people(user["id"])
assert people[0]["bigmind_user"] == "elias_ai"
assert people[0]["bigmind_url"] is None