Files
manage/frontend/src/integrations/__tests__/navEntries.test.ts
T
2026-07-14 21:06:25 +00:00

87 lines
2.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
configuredNavEntries,
remoteMachineNavEntries,
SERVICE_TYPE_NAV_ENTRIES,
} from "../navEntries";
describe("navEntries", () => {
it("returns no entries when no types are configured", () => {
expect(configuredNavEntries(new Set())).toEqual([]);
});
it("returns Jellyfin when jellyfin is configured", () => {
const entries = configuredNavEntries(new Set(["jellyfin"]));
expect(entries).toHaveLength(1);
expect(entries[0].label).toBe("Jellyfin");
expect(entries[0].path).toBe("/services/jellyfin");
});
it("creates one top-level entry per enabled remote machine", () => {
const entries = remoteMachineNavEntries([
{
id: "storage",
name: "Storage",
service_type: "remote_machine",
enabled: true,
},
{
id: "worker",
name: "Worker",
service_type: "remote_machine",
enabled: true,
},
{
id: "disabled",
name: "Disabled",
service_type: "remote_machine",
enabled: false,
},
]);
expect(entries.map((entry) => entry.label)).toEqual(["Storage", "Worker"]);
expect(entries.map((entry) => entry.path)).toEqual([
"/services/remote_machine/storage",
"/services/remote_machine/worker",
]);
});
it("returns all observability entries", () => {
const entries = configuredNavEntries(
new Set(["alertmanager", "prometheus"]),
);
expect(entries.map((entry) => entry.label)).toEqual([
"Alertmanager",
"Prometheus",
]);
});
it("returns Backups + Authentik when configured", () => {
const entries = configuredNavEntries(new Set(["backups", "authentik"]));
expect(entries.map((entry) => entry.label)).toEqual([
"Backups",
"Authentik",
]);
});
it("keeps non-operational service types out of the static map", () => {
expect(
SERVICE_TYPE_NAV_ENTRIES.filter(
(entry) =>
entry.serviceType === "nextcloud" ||
entry.serviceType === "remote_machine",
),
).toEqual([]);
});
it("preserves declaration order across mixed navigable types", () => {
const entries = configuredNavEntries(
new Set(["authentik", "remote_machine", "jellyfin"]),
);
expect(entries.map((entry) => entry.label)).toEqual([
"Jellyfin",
"Authentik",
]);
});
});