# """Tests for MCP open_nodes tool.""" # # import pytest # from mcp.types import EmbeddedResource # # from basic_memory.mcp.server import MIME_TYPE, handle_call_tool # from basic_memory.schemas import OpenNodesResponse, CreateEntityResponse # # # @pytest.mark.asyncio # async def test_open_nodes(app): # """Test retrieving specific nodes by name.""" # # Create test entities # entity_data = { # "entities": [ # { # "name": "OpenTestA", # "entity_type": "test", # "observations": ["First test entity"], # }, # { # "name": "OpenTestB", # "entity_type": "test", # "observations": ["Second test entity"], # }, # { # "name": "OpenTestC", # "entity_type": "test", # "observations": ["Third test entity"], # }, # ] # } # # create_entity_result = await handle_call_tool("create_entities", entity_data) # create_entity_response = CreateEntityResponse.model_validate_json( # create_entity_result[0].resource.text # pyright: ignore [reportAttributeAccessIssue] # ) # entity_a = create_entity_response.entities[0] # entity_b = create_entity_response.entities[1] # # # Open specific nodes # result = await handle_call_tool("open_nodes", {"entity_ids": [entity_a.id, entity_b.id]}) # # # Verify response format # assert len(result) == 1 # assert isinstance(result[0], EmbeddedResource) # assert result[0].type == "resource" # assert result[0].resource.mimeType == MIME_TYPE # # # Verify entities returned # response = OpenNodesResponse.model_validate_json(result[0].resource.text) # pyright: ignore [reportAttributeAccessIssue] # assert len(response.entities) == 2 # # # Entities should be returned in same order as requested # assert response.entities[0].name == "OpenTestA" # assert response.entities[1].name == "OpenTestB" # # # Verify entity content # entity = response.entities[0] # assert entity.id == entity_a.id # assert entity.entity_type == "test" # assert len(entity.observations) == 1 # assert entity.observations[0].content == "First test entity"