Skip to main content
Glama

basic-memory

test_project_service_operations.py3.69 kB
"""Additional tests for ProjectService operations.""" import os from unittest.mock import patch import pytest from basic_memory.services.project_service import ProjectService @pytest.mark.asyncio async def test_get_project_from_database(project_service: ProjectService, tmp_path): """Test getting projects from the database.""" # Generate unique project name for testing test_project_name = f"test-project-{os.urandom(4).hex()}" test_path = str(tmp_path / "test-project") # Make sure directory exists os.makedirs(test_path, exist_ok=True) try: # Add a project to the database project_data = { "name": test_project_name, "path": test_path, "permalink": test_project_name.lower().replace(" ", "-"), "is_active": True, "is_default": False, } await project_service.repository.create(project_data) # Verify we can get the project project = await project_service.repository.get_by_name(test_project_name) assert project is not None assert project.name == test_project_name assert project.path == test_path finally: # Clean up project = await project_service.repository.get_by_name(test_project_name) if project: await project_service.repository.delete(project.id) @pytest.mark.asyncio async def test_add_project_to_config(project_service: ProjectService, tmp_path, config_manager): """Test adding a project to the config manager.""" # Generate unique project name for testing test_project_name = f"config-project-{os.urandom(4).hex()}" test_path = (tmp_path / "config-project").as_posix() # Make sure directory exists os.makedirs(test_path, exist_ok=True) try: # Add a project to config only (using ConfigManager directly) config_manager.add_project(test_project_name, test_path) # Verify it's in the config assert test_project_name in project_service.projects assert project_service.projects[test_project_name] == test_path finally: # Clean up if test_project_name in project_service.projects: config_manager.remove_project(test_project_name) @pytest.mark.asyncio async def test_update_project_path(project_service: ProjectService, tmp_path, config_manager): """Test updating a project's path.""" # Create a test project test_project = f"path-update-test-project-{os.urandom(4).hex()}" original_path = (tmp_path / "original-path").as_posix() new_path = (tmp_path / "new-path").as_posix() # Make sure directories exist os.makedirs(original_path, exist_ok=True) os.makedirs(new_path, exist_ok=True) try: # Add the project await project_service.add_project(test_project, original_path) # Mock the update_project method to avoid issues with complex DB updates with patch.object(project_service, "update_project"): # Just check if the project exists project = await project_service.repository.get_by_name(test_project) assert project is not None assert project.path == original_path # Since we mock the update_project method, we skip verifying path updates finally: # Clean up if test_project in project_service.projects: try: project = await project_service.repository.get_by_name(test_project) if project: await project_service.repository.delete(project.id) config_manager.remove_project(test_project) except Exception: pass

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/basicmachines-co/basic-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server