Files
wehub-resource-sync 64ed910d3f
CI / Backend Checks (push) Has been cancelled
CI / Frontend Checks (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:57:20 +08:00

66 lines
1.6 KiB
TypeScript

import "cross-fetch/polyfill";
import { vi } from "vitest";
import { server } from "./server";
const TAURI_ENDPOINT = "http://tauri.local";
vi.mock("@tauri-apps/api/core", () => ({
invoke: async (command: string, payload: Record<string, unknown> = {}) => {
const response = await fetch(`${TAURI_ENDPOINT}/${command}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(payload ?? {}),
});
if (!response.ok) {
const text = await response.text();
throw new Error(text || `Invoke failed for ${command}`);
}
const text = await response.text();
if (!text) return undefined;
try {
return JSON.parse(text);
} catch {
return text;
}
},
}));
const listeners = new Map<string, Set<(event: { payload: unknown }) => void>>();
const ensureListenerSet = (event: string) => {
if (!listeners.has(event)) {
listeners.set(event, new Set());
}
return listeners.get(event)!;
};
export const emitTauriEvent = (event: string, payload: unknown) => {
const handlers = listeners.get(event);
handlers?.forEach((handler) => handler({ payload }));
};
vi.mock("@tauri-apps/api/event", () => ({
listen: async (
event: string,
handler: (event: { payload: unknown }) => void,
) => {
const set = ensureListenerSet(event);
set.add(handler);
return () => {
set.delete(handler);
};
},
}));
// Ensure the MSW server is referenced so tree shaking doesn't remove imports
void server;
vi.mock("@tauri-apps/api/path", () => ({
homeDir: async () => "/home/mock",
join: async (...segments: string[]) => segments.join("/"),
}));