diff --git a/src/test-utils/widget-config.js b/src/test-utils/widget-config.js index a5e2492a4..31cca5561 100644 --- a/src/test-utils/widget-config.js +++ b/src/test-utils/widget-config.js @@ -32,7 +32,20 @@ export function expectWidgetConfigShape(widget) { expect(mapping.endpoint.length).toBeGreaterThan(0); } if ("map" in mapping) { - expect(mapping.map).toBeTypeOf("function"); + const map = mapping.map; + const proxyName = widget.proxyHandler?.name ?? "genericProxyHandler"; + + // Most handlers treat `map` as a transform function. A small number of custom + // proxies treat it as an options object. + expect(["function", "object"].includes(typeof map)).toBe(true); + + if (typeof map === "object") { + expect(map).not.toBeNull(); + expect(Array.isArray(map)).toBe(false); + // Generic handlers will call `map(resultData)`, so they must never receive an object. + expect(proxyName).not.toBe("genericProxyHandler"); + expect(proxyName).not.toBe("credentialedProxyHandler"); + } } } } diff --git a/src/widgets/pyload/widget.test.js b/src/widgets/pyload/widget.test.js new file mode 100644 index 000000000..f2a2bdd2c --- /dev/null +++ b/src/widgets/pyload/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("pyload widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/qbittorrent/widget.test.js b/src/widgets/qbittorrent/widget.test.js new file mode 100644 index 000000000..d8c6c9752 --- /dev/null +++ b/src/widgets/qbittorrent/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("qbittorrent widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/qnap/widget.test.js b/src/widgets/qnap/widget.test.js new file mode 100644 index 000000000..f35bd1eb4 --- /dev/null +++ b/src/widgets/qnap/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("qnap widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/radarr/widget.test.js b/src/widgets/radarr/widget.test.js new file mode 100644 index 000000000..d111bef27 --- /dev/null +++ b/src/widgets/radarr/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("radarr widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/readarr/widget.test.js b/src/widgets/readarr/widget.test.js new file mode 100644 index 000000000..dd6ce1ce6 --- /dev/null +++ b/src/widgets/readarr/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("readarr widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/romm/widget.test.js b/src/widgets/romm/widget.test.js new file mode 100644 index 000000000..fe7a2b437 --- /dev/null +++ b/src/widgets/romm/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("romm widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/rutorrent/widget.test.js b/src/widgets/rutorrent/widget.test.js new file mode 100644 index 000000000..7efb278ba --- /dev/null +++ b/src/widgets/rutorrent/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("rutorrent widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/sabnzbd/widget.test.js b/src/widgets/sabnzbd/widget.test.js new file mode 100644 index 000000000..02f24ee16 --- /dev/null +++ b/src/widgets/sabnzbd/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("sabnzbd widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/scrutiny/widget.test.js b/src/widgets/scrutiny/widget.test.js new file mode 100644 index 000000000..3713b9df0 --- /dev/null +++ b/src/widgets/scrutiny/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("scrutiny widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/slskd/widget.test.js b/src/widgets/slskd/widget.test.js new file mode 100644 index 000000000..6db58c14c --- /dev/null +++ b/src/widgets/slskd/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("slskd widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/sonarr/widget.test.js b/src/widgets/sonarr/widget.test.js new file mode 100644 index 000000000..a09895874 --- /dev/null +++ b/src/widgets/sonarr/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("sonarr widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/speedtest/widget.test.js b/src/widgets/speedtest/widget.test.js new file mode 100644 index 000000000..b1ea9c84c --- /dev/null +++ b/src/widgets/speedtest/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("speedtest widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/spoolman/widget.test.js b/src/widgets/spoolman/widget.test.js new file mode 100644 index 000000000..d47a2a84f --- /dev/null +++ b/src/widgets/spoolman/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("spoolman widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/stash/widget.test.js b/src/widgets/stash/widget.test.js new file mode 100644 index 000000000..f420f4b52 --- /dev/null +++ b/src/widgets/stash/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("stash widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/stocks/widget.test.js b/src/widgets/stocks/widget.test.js new file mode 100644 index 000000000..4173cc907 --- /dev/null +++ b/src/widgets/stocks/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("stocks widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/strelaysrv/widget.test.js b/src/widgets/strelaysrv/widget.test.js new file mode 100644 index 000000000..297196801 --- /dev/null +++ b/src/widgets/strelaysrv/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("strelaysrv widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/suwayomi/widget.test.js b/src/widgets/suwayomi/widget.test.js new file mode 100644 index 000000000..bddf70e24 --- /dev/null +++ b/src/widgets/suwayomi/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("suwayomi widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/swagdashboard/widget.test.js b/src/widgets/swagdashboard/widget.test.js new file mode 100644 index 000000000..8cd939e91 --- /dev/null +++ b/src/widgets/swagdashboard/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("swagdashboard widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/tailscale/widget.test.js b/src/widgets/tailscale/widget.test.js new file mode 100644 index 000000000..2cf2d0622 --- /dev/null +++ b/src/widgets/tailscale/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("tailscale widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +}); diff --git a/src/widgets/tandoor/widget.test.js b/src/widgets/tandoor/widget.test.js new file mode 100644 index 000000000..381b5e3a2 --- /dev/null +++ b/src/widgets/tandoor/widget.test.js @@ -0,0 +1,11 @@ +import { describe, it } from "vitest"; + +import { expectWidgetConfigShape } from "test-utils/widget-config"; + +import widget from "./widget"; + +describe("tandoor widget config", () => { + it("exports a valid widget config", () => { + expectWidgetConfigShape(widget); + }); +});