Files
n8n-mcp/tests/unit/database/README.md
czlonkowski d870d0ab71 test: add comprehensive unit tests for database, parsers, loaders, and MCP tools
- Database layer tests (32 tests):
  - node-repository.ts: 100% coverage
  - template-repository.ts: 80.31% coverage
  - database-adapter.ts: interface compliance tests

- Parser tests (99 tests):
  - node-parser.ts: 93.10% coverage
  - property-extractor.ts: 95.18% coverage
  - simple-parser.ts: 91.26% coverage
  - Fixed parser bugs for version extraction

- Loader tests (22 tests):
  - node-loader.ts: comprehensive mocking tests

- MCP tools tests (85 tests):
  - tools.ts: 100% coverage
  - tools-documentation.ts: 100% coverage
  - docs-mapper.ts: 100% coverage

Total: 943 tests passing across 32 test files
Significant progress from 2.45% to ~30% overall coverage

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 20:16:38 +02:00

2.0 KiB

Database Layer Unit Tests

This directory contains comprehensive unit tests for the database layer components of n8n-mcp.

Test Coverage

node-repository.ts - 100% Coverage

  • saveNode method with JSON serialization
  • getNode method with JSON deserialization
  • getAITools method
  • safeJsonParse private method
  • Edge cases: large JSON, boolean conversion, invalid JSON handling

template-repository.ts - 80.31% Coverage

  • FTS5 initialization and fallback
  • saveTemplate with sanitization
  • getTemplate and getTemplatesByNodes
  • searchTemplates with FTS5 and LIKE fallback
  • getTemplatesForTask with task mapping
  • Template statistics and maintenance operations
  • Uncovered: Some error paths in FTS5 operations

database-adapter.ts - Tested via Mocks

  • Interface compliance tests
  • PreparedStatement implementation
  • Transaction support
  • FTS5 detection logic
  • Error handling patterns

Test Strategy

The tests use a mock-based approach to:

  1. Isolate database operations from actual database dependencies
  2. Test business logic without requiring real SQLite/sql.js
  3. Ensure consistent test execution across environments
  4. Focus on behavior rather than implementation details

Key Test Files

  • node-repository-core.test.ts - Core NodeRepository functionality
  • template-repository-core.test.ts - Core TemplateRepository functionality
  • database-adapter-unit.test.ts - DatabaseAdapter interface and patterns

Running Tests

# Run all database tests
npm test -- tests/unit/database/

# Run with coverage
npm run test:coverage -- tests/unit/database/

# Run specific test file
npm test -- tests/unit/database/node-repository-core.test.ts

Mock Infrastructure

The tests use custom mock implementations:

  • MockDatabaseAdapter - Simulates database operations
  • MockPreparedStatement - Simulates SQL statement execution
  • Mock logger and template sanitizer for external dependencies

This approach ensures tests are fast, reliable, and maintainable.