Files
KGStudio/src/test/mocks/indexed-db.ts
T
2025-12-08 17:56:58 -08:00

55 lines
1.7 KiB
TypeScript

/**
* Mock implementation of IndexedDB for integration tests
* Provides in-memory storage that mimics IndexedDB interface
*/
import { vi } from 'vitest'
// In-memory storage for tests
const mockStorage = new Map<string, any>()
export const mockIndexedDB = {
openDB: vi.fn().mockImplementation(() => {
return Promise.resolve({
put: vi.fn().mockImplementation((storeName: string, data: any, key?: string) => {
const actualKey = key || data.id || 'default'
mockStorage.set(`${storeName}:${actualKey}`, data)
return Promise.resolve(actualKey)
}),
get: vi.fn().mockImplementation((storeName: string, key: string) => {
return Promise.resolve(mockStorage.get(`${storeName}:${key}`))
}),
getAll: vi.fn().mockImplementation((storeName: string) => {
const results: any[] = []
for (const [key, value] of mockStorage.entries()) {
if (key.startsWith(`${storeName}:`)) {
results.push(value)
}
}
return Promise.resolve(results)
}),
delete: vi.fn().mockImplementation((storeName: string, key: string) => {
mockStorage.delete(`${storeName}:${key}`)
return Promise.resolve()
}),
clear: vi.fn().mockImplementation((storeName: string) => {
for (const key of mockStorage.keys()) {
if (key.startsWith(`${storeName}:`)) {
mockStorage.delete(key)
}
}
return Promise.resolve()
}),
close: vi.fn().mockResolvedValue(undefined),
})
}),
}
// Helper function to clear mock storage between tests
export const clearMockStorage = () => {
mockStorage.clear()
}