1import * as BrowserPersistence from "@effect/platform-browser/BrowserPersistence"
2import { afterAll, beforeAll, describe } from "@effect/vitest"
3import * as PersistedCacheTest from "effect-test/persistence/PersistedCacheTest"
4import { indexedDB as fakeIndexedDb } from "fake-indexeddb"
5
6const database = "effect_persistence_integration"
7
8let previousIndexedDb: unknown
9
10beforeAll(() => {
11 previousIndexedDb = Reflect.get(globalThis, "indexedDB")
12 Reflect.set(globalThis, "indexedDB", fakeIndexedDb)
13})
14
15afterAll(() => {
16 fakeIndexedDb.deleteDatabase(database)
17 if (previousIndexedDb === undefined) {
18 Reflect.deleteProperty(globalThis, "indexedDB")
19 return
20 }
21 Reflect.set(globalThis, "indexedDB", previousIndexedDb)
22})
23
24describe("BrowserPersistence / PersistedCache", { concurrent: false }, () => {
25 PersistedCacheTest.suite(
26 "browser-indexeddb",
27 BrowserPersistence.layerIndexedDb({ database })
28 )
29})