import { describe, it, expect, vi, beforeEach } from "vitest"; // Mock WebSocket for the backend store dependency (loaded transitively) class MockWebSocket { onopen: ((ev: Event) => void) | null = null; onclose: ((ev: CloseEvent) => void) | null = null; onmessage: ((ev: MessageEvent) => void) | null = null; onerror: ((ev: Event) => void) | null = null; close = vi.fn(); } vi.stubGlobal("WebSocket", MockWebSocket); vi.stubGlobal( "fetch", vi.fn(() => Promise.resolve({ ok: true, json: () => Promise.resolve({}), }) ) ); import { transcriptionStore } from "./transcriptions.svelte.ts"; describe("transcriptions store", () => { beforeEach(() => { transcriptionStore.clearAll(); }); it("test_addTranscription", () => { transcriptionStore.addTranscription({ text: "Hello world", user_name: "TestUser", timestamp: "12:00:00", }); expect(transcriptionStore.items.length).toBe(1); expect(transcriptionStore.items[0].text).toBe("Hello world"); expect(transcriptionStore.items[0].userName).toBe("TestUser"); expect(transcriptionStore.items[0].timestamp).toBe("12:00:00"); expect(transcriptionStore.items[0].isPreview).toBe(false); }); it("test_clearAll", () => { transcriptionStore.addTranscription({ text: "One" }); transcriptionStore.addTranscription({ text: "Two" }); expect(transcriptionStore.items.length).toBe(2); transcriptionStore.clearAll(); expect(transcriptionStore.items.length).toBe(0); }); it("test_getPlainText", () => { transcriptionStore.addTranscription({ text: "Hello", user_name: "Alice", timestamp: "10:00", }); transcriptionStore.addTranscription({ text: "World", user_name: "Bob", timestamp: "10:01", }); const text = transcriptionStore.getPlainText(); expect(text).toContain("[10:00] Alice: Hello"); expect(text).toContain("[10:01] Bob: World"); // Lines separated by newline expect(text.split("\n").length).toBe(2); }); });