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