/ tests / utils / test-utils.ts
test-utils.ts
 1  import { vi } from 'vitest'
 2  import type { DreamNode } from '../../src/services/dreamnode-service'
 3  
 4  // Test data factories
 5  export const createMockDreamNode = (overrides: Partial<DreamNode> = {}): DreamNode => ({
 6    id: 'test-123',
 7    name: 'Test DreamNode',
 8    type: 'dream',
 9    path: '/test/path',
10    hasUnsavedChanges: false,
11    ...overrides,
12  })
13  
14  export const createMockDreamerNode = (overrides: Partial<DreamNode> = {}): DreamNode => ({
15    id: 'dreamer-456',
16    name: 'Test Dreamer',
17    type: 'dreamer',
18    path: '/dreamers/test-dreamer',
19    hasUnsavedChanges: false,
20    ...overrides,
21  })
22  
23  // Mock service factories
24  export const createMockUIService = () => ({
25    showSuccess: vi.fn(),
26    showError: vi.fn(),
27    showPlaceholder: vi.fn(),
28    showLoading: vi.fn(() => ({ hide: vi.fn() })),
29  })
30  
31  export const createMockGitService = () => ({
32    commitWithAI: vi.fn(),
33    createDreamNode: vi.fn(),
34    weaveDreams: vi.fn(),
35  })
36  
37  export const createMockVaultService = () => ({
38    createFolder: vi.fn(),
39    fileExists: vi.fn(),
40    folderExists: vi.fn(),
41    readFile: vi.fn(),
42    writeFile: vi.fn(),
43    deleteFile: vi.fn(),
44  })
45  
46  // Store test utilities
47  export const resetStore = async () => {
48    const { useInterBrainStore } = await import('../../src/store/interbrain-store')
49    const state = useInterBrainStore.getState()
50    state.setSelectedNode(null)
51    state.setSearchResults([])
52    state.setSpatialLayout('constellation')
53  }
54  
55  // Async test helpers
56  export const waitFor = (condition: () => boolean, timeout = 1000): Promise<void> => {
57    return new Promise((resolve, reject) => {
58      const start = Date.now()
59      
60      const check = () => {
61        if (condition()) {
62          resolve()
63        } else if (Date.now() - start > timeout) {
64          reject(new Error('Timeout waiting for condition'))
65        } else {
66          setTimeout(check, 10)
67        }
68      }
69      
70      check()
71    })
72  }