ManimCat / frontend /src /test /setup.ts
littlebrian's picture
Sync from enhance: d795216 feat: implement patch response parser for search and replace functionality
9bd4242
Raw
History Blame Contribute Delete
1.26 kB
import '@testing-library/jest-dom/vitest'
import { beforeEach } from 'vitest'
function createStorageMock(): Storage {
const store = new Map<string, string>()
return {
getItem(key: string) {
return store.has(key) ? store.get(key)! : null
},
setItem(key: string, value: string) {
store.set(String(key), String(value))
},
removeItem(key: string) {
store.delete(String(key))
},
clear() {
store.clear()
},
key(index: number) {
return Array.from(store.keys())[index] ?? null
},
get length() {
return store.size
}
}
}
function ensureStorage(name: 'localStorage' | 'sessionStorage'): Storage {
const current = window[name]
if (current && typeof current.getItem === 'function' && typeof current.setItem === 'function') {
return current
}
const storage = createStorageMock()
Object.defineProperty(window, name, {
value: storage,
configurable: true
})
Object.defineProperty(globalThis, name, {
value: storage,
configurable: true
})
return storage
}
const localStorageMock = ensureStorage('localStorage')
const sessionStorageMock = ensureStorage('sessionStorage')
beforeEach(() => {
localStorageMock.clear()
sessionStorageMock.clear()
})