Files
basicmachines-co-basic-memory/tests/mcp/test_tool_memory.py
T
2025-01-18 23:54:28 -06:00

67 lines
2.2 KiB
Python

"""Tests for discussion context MCP tool."""
import pytest
from basic_memory.mcp.tools.memory import build_context
from basic_memory.schemas.memory import GraphContext
@pytest.mark.asyncio
async def test_get_basic_discussion_context(client, test_graph):
"""Test getting basic discussion context."""
context = await build_context(
url="memory://test/root"
)
assert isinstance(context, GraphContext)
assert len(context.primary_entities) == 1
assert context.primary_entities[0].permalink == "test/root"
assert len(context.related_entities) > 0
# Verify metadata
assert context.metadata["uri"] == "test/root"
assert context.metadata["depth"] == 1 # default depth
assert context.metadata["timeframe"] is not None
assert isinstance(context.metadata["generated_at"], str)
assert context.metadata["matched_entities"] == 1
@pytest.mark.asyncio
async def test_get_discussion_context_pattern(client, test_graph):
"""Test getting context with pattern matching."""
context = await build_context(
url="memory://test/*",
depth=1
)
assert isinstance(context, GraphContext)
assert len(context.primary_entities) > 1 # Should match multiple test/* paths
assert all("test/" in e.permalink for e in context.primary_entities)
assert context.metadata["depth"] == 1
@pytest.mark.asyncio
async def test_get_discussion_context_timeframe(client, test_graph):
"""Test timeframe parameter filtering."""
# Get recent context
recent_context = await build_context(
url="memory://test/root",
timeframe="1d" # Last 24 hours
)
# Get older context
older_context = await build_context(
url="memory://test/root",
timeframe="30d" # Last 30 days
)
assert len(older_context.related_entities) >= len(recent_context.related_entities)
@pytest.mark.asyncio
async def test_get_discussion_context_not_found(client):
"""Test handling of non-existent URIs."""
context = await build_context(
url="memory://test/does-not-exist"
)
assert isinstance(context, GraphContext)
assert len(context.primary_entities) == 0
assert len(context.related_entities) == 0
assert context.metadata["matched_entities"] == 0