Files
fusion/plugins/fusion-plugin-even-realities-glasses/src/__tests__/settings.test.ts
Fusion 007efcab0b feat(FN-3970): consolidate Even plugin APIs into unified package with webho
Collapsed the Even plugin architecture into a single unified plugin by merging board card routes and replacing the transport stub with a real webhook implementation, removing the separate cards plugin from the workspace. The new unified plugin (`fusion-plugin-even-realities-glasses`) now exports con

Fusion-Task-Id: FN-3970
2026-05-11 06:47:42 -07:00

53 lines
2.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
agentActionsEnabled,
getCompanionWebhookUrl,
getFusionBaseUrl,
getFusionToken,
getNotifyColumns,
getPollingIntervalMs,
getQuickCaptureColumn,
} from "../settings.js";
describe("settings accessors", () => {
it("uses safe defaults", () => {
expect(getFusionBaseUrl({})).toBe("http://localhost:4040");
expect(getFusionToken({})).toBeUndefined();
expect(getCompanionWebhookUrl({})).toBeUndefined();
expect(getPollingIntervalMs({})).toBe(30000);
expect(getNotifyColumns({})).toEqual(["in-review"]);
expect(getQuickCaptureColumn({})).toBe("triage");
expect(agentActionsEnabled({})).toBe(true);
});
it("trims string values", () => {
expect(getFusionBaseUrl({ fusionApiBaseUrl: " http://fusion.local:4040 " })).toBe("http://fusion.local:4040");
expect(getFusionToken({ fusionApiToken: " token " })).toBe("token");
expect(getCompanionWebhookUrl({ companionWebhookUrl: " https://companion.example/ingest " })).toBe(
"https://companion.example/ingest",
);
});
it("enforces polling minimum and finite values", () => {
expect(getPollingIntervalMs({ pollingIntervalSeconds: 2 })).toBe(5000);
expect(getPollingIntervalMs({ pollingIntervalSeconds: 8.9 })).toBe(8000);
expect(getPollingIntervalMs({ pollingIntervalSeconds: Number.NaN })).toBe(30000);
});
it("filters notify columns and falls back when invalid", () => {
expect(getNotifyColumns({ notifyOnColumns: ["todo", " nope ", "in-review", 4] })).toEqual(["todo", "in-review"]);
expect(getNotifyColumns({ notifyOnColumns: ["nope"] })).toEqual(["in-review"]);
});
it("validates quick capture column", () => {
expect(getQuickCaptureColumn({ quickCaptureDefaultColumn: "done" })).toBe("done");
expect(getQuickCaptureColumn({ quickCaptureDefaultColumn: "bad-column" })).toBe("triage");
});
it("respects explicit boolean for agent actions", () => {
expect(agentActionsEnabled({ enableAgentActions: false })).toBe(false);
expect(agentActionsEnabled({ enableAgentActions: true })).toBe(true);
expect(agentActionsEnabled({ enableAgentActions: "true" })).toBe(true);
});
});