72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
import type { Tab } from "./navigation";
|
|
import { setTabFromRoute } from "./app-settings";
|
|
|
|
type SettingsHost = Parameters<typeof setTabFromRoute>[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();
|
|
});
|
|
});
|