/** * Mock implementation of @tauri-apps/api for testing * * This allows tests to run without a Tauri runtime. */ import { vi } from "vitest"; // Store for mock responses - tests can override these export const mockResponses: Record = {}; // Mock invoke function export const invoke = vi.fn(async (cmd: string, _args?: unknown) => { if (cmd in mockResponses) { return mockResponses[cmd]; } // Default responses switch (cmd) { case "greet": return "Hello from mock Tauri!"; case "get_lore_status": return { last_sync: null, is_healthy: true, message: "Mock lore status", }; default: throw new Error(`Mock not implemented for command: ${cmd}`); } }); // Helper to set mock responses in tests export function setMockResponse(cmd: string, response: unknown): void { mockResponses[cmd] = response; } // Helper to reset all mocks export function resetMocks(): void { invoke.mockClear(); Object.keys(mockResponses).forEach((key) => delete mockResponses[key]); } // Mock event listener export const listen = vi.fn( async (_event: string, _handler: (payload: unknown) => void) => { // Return unlisten function return vi.fn(); } ); // Mock event emitter export const emit = vi.fn(async (_event: string, _payload?: unknown) => {}); // Core module exports export const core = { invoke, }; // Event module exports export const event = { listen, emit, }; // Window module mock export const window = { getCurrent: vi.fn(() => ({ label: "main", listen: vi.fn(), emit: vi.fn(), close: vi.fn(), hide: vi.fn(), show: vi.fn(), isVisible: vi.fn(async () => true), setTitle: vi.fn(), })), };