From 57c45dbb72d430bb7744cf697dab08b349925452 Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Fri, 6 Nov 2026 08:17:38 -0500 Subject: [PATCH] fix(web): isolate unit test storage (#33021) --- web/test/unit/mocks/storage.ts | 27 +++++++++++++++++++++++++++ web/test/unit/setup.ts | 5 +++++ 2 files changed, 32 insertions(+) create mode 100644 web/test/unit/mocks/storage.ts diff --git a/web/test/unit/mocks/storage.ts b/web/test/unit/mocks/storage.ts new file mode 100644 index 000000000..721b00462 --- /dev/null +++ b/web/test/unit/mocks/storage.ts @@ -0,0 +1,27 @@ +export class MemoryStorage implements Storage { + private items = new Map(); + + get length() { + return this.items.size; + } + + key(index: number) { + return [...this.items.keys()][index] ?? null; + } + + getItem(key: string) { + return this.items.get(key) ?? null; + } + + setItem(key: string, value: string) { + this.items.set(key, value); + } + + removeItem(key: string) { + this.items.delete(key); + } + + clear() { + this.items.clear(); + } +} diff --git a/web/test/unit/setup.ts b/web/test/unit/setup.ts index cc029ba9c..af1963e91 100644 --- a/web/test/unit/setup.ts +++ b/web/test/unit/setup.ts @@ -1,5 +1,10 @@ +import { MemoryStorage } from '#test/unit/mocks/storage.ts'; import { init } from 'svelte-i18n'; +for (const name of ['localStorage', 'sessionStorage']) { + Object.defineProperty(globalThis, name, { value: new MemoryStorage(), configurable: true }); +} + beforeAll(async () => { await init({ fallbackLocale: 'dev' }); });