|
1 | 1 | import { afterEach, describe, expect, it, vi } from "vitest"; |
2 | 2 |
|
3 | | -import { |
4 | | - createMemoryStorageAdapter, |
5 | | - getDefaultStorageAdapter, |
6 | | - getLocalStorageAdapter, |
7 | | -} from "../src/storage"; |
| 3 | +async function loadStorageModule() { |
| 4 | + vi.resetModules(); |
| 5 | + return import("../src/storage"); |
| 6 | +} |
8 | 7 |
|
9 | 8 | describe("storage adapters", () => { |
10 | 9 | afterEach(() => { |
11 | 10 | vi.unstubAllGlobals(); |
12 | 11 | }); |
13 | 12 |
|
14 | | - it("memory adapter stores and retrieves values", async () => { |
15 | | - const adapter = createMemoryStorageAdapter(); |
| 13 | + it("noop adapter ignores writes", async () => { |
| 14 | + const { createNoopStorageAdapter } = await loadStorageModule(); |
| 15 | + const adapter = createNoopStorageAdapter(); |
16 | 16 |
|
17 | 17 | expect(await adapter.getItem("key")).toBeNull(); |
18 | 18 | await adapter.setItem("key", "value"); |
19 | | - expect(await adapter.getItem("key")).toBe("value"); |
| 19 | + expect(await adapter.getItem("key")).toBeNull(); |
20 | 20 |
|
21 | 21 | await adapter.removeItem?.("key"); |
22 | 22 | expect(await adapter.getItem("key")).toBeNull(); |
23 | 23 | }); |
24 | 24 |
|
25 | | - it("localStorage adapter throws when localStorage is unavailable", () => { |
| 25 | + it("localStorage adapter throws when localStorage is unavailable", async () => { |
| 26 | + const { getLocalStorageAdapter } = await loadStorageModule(); |
26 | 27 | vi.stubGlobal("localStorage", undefined); |
27 | 28 | expect(() => getLocalStorageAdapter()).toThrowError( |
28 | 29 | "localStorage is not available. Provide a custom storage adapter.", |
29 | 30 | ); |
30 | 31 | }); |
31 | 32 |
|
32 | | - it("default adapter falls back when localStorage is unavailable", async () => { |
| 33 | + it("default adapter falls back to noop on server runtimes", async () => { |
| 34 | + vi.resetModules(); |
| 35 | + vi.stubGlobal("window", undefined); |
| 36 | + vi.stubGlobal("document", undefined); |
33 | 37 | vi.stubGlobal("localStorage", undefined); |
| 38 | + |
| 39 | + const { getDefaultStorageAdapter } = await import("../src/storage"); |
34 | 40 | const adapter = getDefaultStorageAdapter(); |
35 | 41 |
|
36 | 42 | await adapter.setItem("fallback", "ok"); |
37 | | - expect(await adapter.getItem("fallback")).toBe("ok"); |
| 43 | + expect(await adapter.getItem("fallback")).toBeNull(); |
38 | 44 | }); |
39 | 45 | }); |
0 commit comments