import { vi } from "vitest" export class MockStore { private data = new Map() async get(key: string): Promise { return this.data.get(key) ?? null } async set(key: string, value: any): Promise { this.data.set(key, value) } async has(key: string): Promise { return this.data.has(key) } async delete(key: string): Promise { this.data.delete(key) } async clear(): Promise { this.data.clear() } async save(): Promise { // No-op in tests } async load(): Promise { // No-op in tests } async keys(): Promise { return Array.from(this.data.keys()) } async values(): Promise { return Array.from(this.data.values()) } async entries(): Promise<[string, any][]> { return Array.from(this.data.entries()) } async length(): Promise { return this.data.size } // Test helpers getAll() { return Object.fromEntries(this.data) } reset() { this.data.clear() } setData(data: Record) { this.data.clear() Object.entries(data).forEach(([key, value]) => { this.data.set(key, value) }) } } export const mockStore = new MockStore() vi.mock("@tauri-apps/plugin-store", () => ({ Store: vi.fn(() => mockStore), load: vi.fn().mockResolvedValue(mockStore), })) // Helper functions for common store operations export const storePresets = { empty: () => mockStore.reset(), withUserSettings: (settings: any = {}) => { mockStore.setData({ "user-settings": { theme: "light", language: "en", ...settings, }, }) }, withAppSettings: (settings: any = {}) => { mockStore.setData({ "app-settings": { autoSave: true, backupInterval: 300, ...settings, }, }) }, withProjectData: (project: any = {}) => { mockStore.setData({ "current-project": { id: "test-project", name: "Test Project", path: "/test/project.json", ...project, }, }) }, } // Helper to reset store mocks export function resetStoreMocks() { mockStore.reset() vi.clearAllMocks() }