Files
n8n-mcp/tests/unit/database
czlonkowski fdc37efde7 refactor: streamline test suite - cut 33 files, enable parallel execution (11.9x speedup)
Remove duplicate, low-value, and fragmented test files while preserving
all meaningful coverage. Enable parallel test execution and remove
the entire benchmark infrastructure.

Key changes:
- Consolidate workflow-validator tests (13 files -> 3)
- Consolidate config-validator tests (9 files -> 3)
- Consolidate telemetry tests (11 files -> 6)
- Merge AI validator tests (2 files -> 1)
- Remove example/demo test files, mock-testing files, and already-skipped tests
- Remove benchmark infrastructure (10 files, CI workflow, 4 npm scripts)
- Enable parallel test execution (remove singleThread: true)
- Remove retry:2 that was masking flaky tests
- Slim CI publish-results job

Results: 224 -> 191 test files, 4690 -> 4303 tests, 121K -> 106K lines
Local runtime: 319s -> 27s (11.9x speedup)

Conceived by Romuald Członkowski - www.aiadvisors.pl/en

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 23:41:06 +01:00
..

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.