README.mdβ’2.03 kB
# 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
```bash
# 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.