From 5d670ee51adb37b375efce269cf9b4720547746d Mon Sep 17 00:00:00 2001 From: 777genius Date: Tue, 5 May 2026 10:43:01 +0300 Subject: [PATCH] test(composer): simplify draft storage idb mock --- test/renderer/hooks/useComposerDraft.test.ts | 66 +++++++++++--------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/test/renderer/hooks/useComposerDraft.test.ts b/test/renderer/hooks/useComposerDraft.test.ts index 0e7ecbde..5a7a5e76 100644 --- a/test/renderer/hooks/useComposerDraft.test.ts +++ b/test/renderer/hooks/useComposerDraft.test.ts @@ -3,35 +3,45 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; // Mock idb-keyval before importing composerDraftStorage const store = new Map(); -vi.mock('idb-keyval', () => ({ - createStore: vi.fn( - () => - async ( - _txMode: IDBTransactionMode, - callback: (objectStore: IDBObjectStore) => T | PromiseLike - ): Promise => { - const objectStore = { - transaction: {}, - get: (key: string) => { - const request = { - result: store.get(key) ?? undefined, - error: null, - onsuccess: null as (() => void) | null, - onerror: null as (() => void) | null, - }; - queueMicrotask(() => { - request.onsuccess?.(); - }); - return request; - }, - delete: (key: string) => { - store.delete(key); - }, - }; +interface MockIdbRequest { + result: unknown; + error: null; + onsuccess: (() => void) | null; + onerror: (() => void) | null; +} - return callback(objectStore as unknown as IDBObjectStore); - } - ), +function createMockGetRequest(result: unknown): MockIdbRequest { + const request: MockIdbRequest = { + result, + error: null, + onsuccess: null, + onerror: null, + }; + + queueMicrotask(() => { + request.onsuccess?.(); + }); + + return request; +} + +async function useMockObjectStore( + _txMode: IDBTransactionMode, + callback: (objectStore: IDBObjectStore) => T | PromiseLike +): Promise { + const objectStore = { + transaction: {}, + get: (key: string) => createMockGetRequest(store.get(key) ?? undefined), + delete: (key: string) => { + store.delete(key); + }, + }; + + return callback(objectStore as unknown as IDBObjectStore); +} + +vi.mock('idb-keyval', () => ({ + createStore: vi.fn(() => useMockObjectStore), promisifyRequest: vi.fn(() => Promise.resolve(undefined)), get: vi.fn((key: string) => Promise.resolve(store.get(key) ?? undefined)), set: vi.fn((key: string, value: unknown) => {