54 lines · 1.4 KB · TypeScript
RawDownload
import { DEFAULT_CLIENT_SETTINGS } from "@t3tools/contracts";import { afterEach, describe, expect, it, vi } from "vite-plus/test"; function createLocalStorageStub(): Storage {  const store = new Map<string, string>();  return {    getItem: (key) => store.get(key) ?? null,    setItem: (key, value) => {      store.set(key, value);    },    removeItem: (key) => {      store.delete(key);    },    clear: () => {      store.clear();    },    key: (index) => [...store.keys()][index] ?? null,    get length() {      return store.size;    },  };} function getTestWindow(): Window & typeof globalThis {  const localStorage = createLocalStorageStub();  const testWindow = {    localStorage,  } as Window & typeof globalThis;  vi.stubGlobal("window", testWindow);  vi.stubGlobal("localStorage", localStorage);  return testWindow;} afterEach(() => {  vi.resetModules();  vi.unstubAllGlobals();  vi.restoreAllMocks();}); describe("clientPersistenceStorage", () => {  it("persists client settings in browser storage", async () => {    getTestWindow();    const { readBrowserClientSettings, writeBrowserClientSettings } =      await import("./clientPersistenceStorage");    const settings = {      ...DEFAULT_CLIENT_SETTINGS,      timestampFormat: "24-hour" as const,    };     writeBrowserClientSettings(settings);     expect(readBrowserClientSettings()).toEqual(settings);  });});