Skip to main content
Glama
README.md4.4 kB
# MCP Kanka Tests This directory contains comprehensive tests for the MCP Kanka server. ## Test Structure ``` tests/ ├── unit/ # Unit tests with mocked dependencies │ ├── test_converter.py # Content conversion tests │ ├── test_utils.py # Utility function tests │ ├── test_resources.py # Resource endpoint tests │ ├── test_service.py # Service layer tests (mocked Kanka client) │ └── test_tools.py # Tool handler tests (mocked service) │ ├── integration/ # Integration tests using real Kanka API │ ├── test_find_entities.py # Search and filter tests │ ├── test_create_update_delete.py # CRUD operation tests │ ├── test_posts.py # Post operation tests │ └── run_integration_tests.py # Run all integration tests │ └── test_server.py # Main test file for pytest discovery ``` ## Running Tests ### Unit Tests Unit tests use mocked dependencies and don't require Kanka API access: ```bash # Run all unit tests make test # Run specific unit test file pytest tests/unit/test_converter.py -v # Run with coverage make coverage ``` ### Integration Tests Integration tests require a real Kanka campaign and API token. 1. **Setup Environment**: ```bash cd tests/integration cp .env.example .env # Edit .env with your Kanka API token and campaign ID ``` 2. **Run All Integration Tests**: ```bash python tests/integration/run_integration_tests.py ``` 3. **Run Individual Test Files**: ```bash python tests/integration/test_find_entities.py python tests/integration/test_create_update_delete.py python tests/integration/test_posts.py ``` ## Test Coverage Goals ### Unit Tests - **converter.py**: Markdown/HTML conversion with entity mention preservation - **utils.py**: Fuzzy matching, filtering, pagination, search functions - **resources.py**: Kanka context resource generation - **service.py**: All service methods with mocked KankaClient - **tools.py**: All tool handlers with mocked service layer ### Integration Tests - **find_entities**: Search, filtering, pagination, all parameter combinations - **create_entities**: Single/batch creation, all entity types, error handling - **update_entities**: Full/partial updates, batch operations - **get_entities**: With/without posts, batch retrieval - **delete_entities**: Single/batch deletion, cascading posts - **posts**: CRUD operations on entity posts ## Writing New Tests ### Unit Tests ```python from unittest.mock import Mock, patch import pytest class TestNewFeature: def test_something(self): # Arrange mock_dependency = Mock() mock_dependency.method.return_value = "expected" # Act result = function_under_test(mock_dependency) # Assert assert result == "expected" ``` ### Integration Tests ```python class TestNewIntegration(IntegrationTestBase): async def test_real_api_call(self): # Create test data result = await self.call_tool("create_entities", entities=[{ "entity_type": "character", "name": "Integration Test - DELETE ME", }]) # Track for cleanup self.track_entity(result[0]["entity_id"]) # Test behavior # ...assertions... ``` ## Important Notes 1. **Test Isolation**: Each test should be independent and clean up after itself 2. **Test Data**: Always use "Integration Test - DELETE ME" prefix for test entities 3. **Rate Limiting**: Use `wait_for_api()` between API calls in integration tests 4. **Error Testing**: Include tests for error conditions and edge cases 5. **Async Tests**: Integration tests are async - use proper async/await patterns ## Troubleshooting ### Common Issues 1. **Import Errors**: Ensure you're running tests from the project root or have proper PYTHONPATH 2. **API Rate Limits**: Add delays between API calls using `wait_for_api()` 3. **Cleanup Failures**: Check that entity IDs are properly tracked for cleanup 4. **Environment Variables**: Verify .env file is loaded and variables are set ### Debug Mode Set environment variable for more verbose output: ```bash export MCP_LOG_LEVEL=DEBUG ``` To keep test entities for inspection: ```bash export KANKA_TEST_DEFER_CLEANUP=true ```

Latest Blog Posts

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/ervwalter/mcp-kanka'

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