import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { Tab } from "./navigation"; import { setTabFromRoute } from "./app-settings"; type SettingsHost = Parameters[0] & { logsPollInterval: number | null; debugPollInterval: number | null; }; const createHost = (tab: Tab): SettingsHost => ({ settings: { gatewayUrl: "", token: "", sessionKey: "main", lastActiveSessionKey: "main", theme: "system", chatFocusMode: false, chatShowThinking: true, splitRatio: 0.6, navCollapsed: false, navGroupsCollapsed: {}, }, theme: "system", themeResolved: "dark", applySessionKey: "main", sessionKey: "main", tab, connected: false, chatHasAutoScrolled: false, logsAtBottom: false, eventLog: [], eventLogBuffer: [], basePath: "", themeMedia: null, themeMediaHandler: null, logsPollInterval: null, debugPollInterval: null, }); describe("setTabFromRoute", () => { beforeEach(() => { vi.useFakeTimers(); }); afterEach(() => { vi.useRealTimers(); }); it("starts and stops log polling based on the tab", () => { const host = createHost("chat"); setTabFromRoute(host, "logs"); expect(host.logsPollInterval).not.toBeNull(); expect(host.debugPollInterval).toBeNull(); setTabFromRoute(host, "chat"); expect(host.logsPollInterval).toBeNull(); }); it("starts and stops debug polling based on the tab", () => { const host = createHost("chat"); setTabFromRoute(host, "debug"); expect(host.debugPollInterval).not.toBeNull(); expect(host.logsPollInterval).toBeNull(); setTabFromRoute(host, "chat"); expect(host.debugPollInterval).toBeNull(); }); });