Files
basicmachines-co-basic-memory/tests/mcp/test_tool_discovery.py
T
2025-01-12 16:47:21 -06:00

60 lines
2.1 KiB
Python

"""Tests for knowledge discovery MCP tools."""
import pytest
from basic_memory.mcp.tools.discovery import (
get_observation_categories,
)
from basic_memory.mcp.tools.knowledge import create_entities, add_observations
from basic_memory.schemas import Entity, CreateEntityRequest, ObservationCategoryList
from basic_memory.schemas.request import ObservationCreate, AddObservationsRequest
@pytest.mark.asyncio
async def test_get_observation_categories(client):
"""Test getting list of observation categories."""
# First create an entity with categorized observations
request = CreateEntityRequest(
entities=[
Entity(
title="Test Entity",
entity_type="test",
summary="Test entity",
observations=[],
)
]
)
entity = (await create_entities(request)).entities[0]
# Add observations with different categories
observations = [
ObservationCreate(content="Technical detail", category="tech"),
ObservationCreate(content="Design decision", category="design"),
ObservationCreate(content="Feature spec", category="feature"),
ObservationCreate(content="General note", category="note"),
]
await add_observations(
AddObservationsRequest(permalink=entity.permalink, observations=observations)
)
# Get categories
result = await get_observation_categories()
observation_categories = ObservationCategoryList.model_validate(result)
# Verify results
assert "tech" in observation_categories.categories
assert "design" in observation_categories.categories
assert "feature" in observation_categories.categories
assert "note" in observation_categories.categories
@pytest.mark.asyncio
async def test_get_observation_categories_empty(client):
"""Test getting observation categories when no observations exist."""
result = await get_observation_categories()
observation_categories = ObservationCategoryList.model_validate(result)
# Should return empty list, not error
observation_categories.categories == []