35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
|
|
import { getWidgetQueryKeys, getWidgetRuntimeQueries, setWidgetRuntimeQueries } from "./definition";
|
|
|
|
const togglePolling = () => undefined;
|
|
|
|
describe("getWidgetQueryKeys", () => {
|
|
test("falls back to the widget router namespace", () => {
|
|
expect(getWidgetQueryKeys({ kind: "example" })).toEqual([[["widget", "example"]]]);
|
|
});
|
|
|
|
test("wraps a singular explicit key", () => {
|
|
expect(getWidgetQueryKeys({ kind: "example", queryKey: [["app", "byId"]] })).toEqual([[["app", "byId"]]]);
|
|
});
|
|
|
|
test("preserves every explicit key for multi-root widgets", () => {
|
|
const queryKeys = [
|
|
[["widget", "audioStats", "getStats"]],
|
|
[["widget", "mediaServer", "getCurrentStreams"]],
|
|
] as const;
|
|
|
|
expect(getWidgetQueryKeys({ kind: "audioStats", queryKeys })).toBe(queryKeys);
|
|
});
|
|
|
|
test("registers runtime queries without replacing imperative widget actions", () => {
|
|
const widgetStateRef = { current: { togglePolling } };
|
|
const runtimeQueries = [{ path: ["widget", "calendar", "findAllEvents"], input: { month: 7 } }];
|
|
|
|
setWidgetRuntimeQueries(widgetStateRef, runtimeQueries);
|
|
|
|
expect(widgetStateRef.current.togglePolling).toBe(togglePolling);
|
|
expect(getWidgetRuntimeQueries(widgetStateRef)).toEqual(runtimeQueries);
|
|
});
|
|
});
|