**Issue**: 30 CI tests failing with "incomplete input" database error
- tests/unit/mcp/get-node-essentials-examples.test.ts (16 tests)
- tests/unit/mcp/search-nodes-examples.test.ts (14 tests)
**Root Cause**:
Both `src/mcp/server.ts` and `tests/integration/database/test-utils.ts`
used naive `schema.split(';')` to parse SQL statements. This breaks
trigger definitions containing semicolons inside BEGIN...END blocks:
```sql
CREATE TRIGGER nodes_fts_insert AFTER INSERT ON nodes
BEGIN
INSERT INTO nodes_fts(...) VALUES (...); -- ← semicolon inside block
END;
```
Splitting by ';' created incomplete statements, causing SQLite parse errors.
**Fix**:
- Added `parseSQLStatements()` method to both files
- Tracks `inBlock` state when entering BEGIN...END blocks
- Only splits on ';' when NOT inside a block
- Skips SQL comments and empty lines
- Preserves complete trigger definitions
**Documentation**:
Added clarifying comments to explain FTS5 search architecture:
- `NodeRepository.searchNodes()`: Legacy LIKE-based search for direct repository usage
- `MCPServer.searchNodes()`: Production FTS5 search used by ALL MCP tools
This addresses confusion from code review where FTS5 appeared unused.
In reality, FTS5 IS used via MCPServer.searchNodes() (lines 1189-1203).
**Verification**:
✅ get-node-essentials-examples.test.ts: 16 tests passed
✅ search-nodes-examples.test.ts: 14 tests passed
✅ CI database validation: 25 tests passed
✅ Build successful with no TypeScript errors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major improvements based on comprehensive test suite review:
Test Fixes:
- Fix all 78 failing tests across logger, MSW, and validator tests
- Fix console spy management in logger tests with proper DEBUG env handling
- Fix MSW test environment restoration in session-management.test.ts
- Fix workflow validator tests by adding proper node connections
- Fix mock setup issues in edge case tests
Test Organization:
- Split large config-validator.test.ts (1,075 lines) into 4 focused files
- Rename 63+ tests to follow "should X when Y" naming convention
- Add comprehensive edge case test files for all major validators
- Create tests/README.md with testing guidelines and best practices
New Features:
- Add ConfigValidator.validateBatch() method for bulk validation
- Add edge case coverage for null/undefined, boundaries, invalid data
- Add CI-aware performance test timeouts
- Add JSDoc comments to test utilities and factories
- Add workflow duplicate node name validation tests
Results:
- All tests passing: 1,356 passed, 19 skipped
- Test coverage: 85.34% statements, 85.3% branches
- From 78 failures to 0 failures
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed InMemoryTransport destructuring (object → array)
- Updated all callTool calls to new object syntax
- Changed getServerInfo() to getServerVersion()
- Added type assertions for response objects
- Fixed import paths and missing imports
- Corrected template and performance test type issues
- All 56 TypeScript errors resolved
Both 'npm run lint' and 'npm run typecheck' now pass successfully
- Fixed better-sqlite3 ES module imports across all tests
- Updated template repository method to handle undefined results
- Fixed all database column references to match schema
- Corrected MCP transport initialization
- All integration tests now passing
- Fix better-sqlite3 import statements to use namespace import
- Update test schemas to match actual database schema
- Align NodeRepository tests with actual API implementation
- Fix FTS5 tests to work with templates instead of nodes
- Update mock data to match ParsedNode interface
- Fix column names to match actual schema (node_type, package_name, etc)
- Add proper ParsedNode creation helper function
- Remove tests for non-existent foreign key constraints
- Add comprehensive test utilities for database testing
- Implement connection management tests for in-memory and file databases
- Add transaction tests including nested transactions and savepoints
- Test database lifecycle, error handling, and performance
- Include tests for WAL mode, connection pooling, and constraints
Part of Phase 4: Integration Testing