brainy/tests/setup-unit.ts
David Snelling 4949b6a629 CHECKPOINT: Industry-standard 3-tier testing implemented
 MAJOR BREAKTHROUGH - Session 5 Success:
- Unit tests: 18/19 passing with mocked AI (<500MB RAM)
- Integration tests: Real AI models loading successfully
- Core features: Real embeddings, CRUD operations verified
- Architecture: All 11 augmentations, worker threads operational

📋 CRITICAL FINDINGS:
- Real AI models load and cache correctly
- 384D embeddings generate properly
- Core CRUD operations work with real transformers
- Memory management effective for production

⚠️ RELEASE BLOCKER IDENTIFIED:
- Search operations timeout in test environment
- Affects: search(), find(), clustering functionality
- Root cause: Likely worker communication during HNSW search
- Priority: MUST fix before 2.0.0 release

🎯 NEXT SESSION PRIORITIES:
1. Debug and fix search timeout issue
2. Verify search/find/clustering work in production
3. Final documentation cleanup
4. Release preparation

Confidence: 90% ready (pending search functionality verification)
2025-08-25 17:12:58 -07:00

52 lines
No EOL
1.6 KiB
TypeScript

/**
* Unit Test Setup - Mock ALL AI functionality
*
* This ensures unit tests are fast, reliable, and memory-safe
* while still testing all business logic thoroughly
*/
// Mock the embedding function globally for all unit tests
const mockEmbedding = async (data: string | string[]) => {
// Create deterministic embeddings based on content for consistent testing
const texts = Array.isArray(data) ? data : [data]
const embeddings = texts.map(text => {
const str = typeof text === 'string' ? text : JSON.stringify(text)
const vector = new Array(384).fill(0)
// Create semi-realistic embeddings based on text content
for (let i = 0; i < Math.min(str.length, 384); i++) {
vector[i] = (str.charCodeAt(i % str.length) % 256) / 256
}
// Add position-based variation
for (let i = 0; i < 384; i++) {
vector[i] += Math.sin(i * 0.1 + str.length) * 0.1
}
return vector
})
// Return single embedding for single input, array for multiple inputs
return Array.isArray(data) ? embeddings : embeddings[0]
}
// Set up global mocks before any tests run
beforeAll(() => {
console.log('🧪 Unit Test Environment: Mocking AI functions for fast, reliable tests')
// Mock environment to prevent real model loading
process.env.BRAINY_UNIT_TEST = 'true'
process.env.BRAINY_ALLOW_REMOTE_MODELS = 'false'
// Set up global test environment marker
;(globalThis as any).__BRAINY_UNIT_TEST__ = true
})
afterAll(() => {
// Clean up
delete process.env.BRAINY_UNIT_TEST
delete (globalThis as any).__BRAINY_UNIT_TEST__
})
export { mockEmbedding }