- Deleted `EdgeGatewayAdvancedOperations.vue` and `EdgeGatewayContextPanel.vue`. - Removed related unit tests in `use-edge-gateway-terminal.spec.js`. - Cleaned up unused exports in `useEdgeGatewayTerminal.js`.
96 lines
3.0 KiB
JavaScript
96 lines
3.0 KiB
JavaScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
buildRelayHealthRows,
|
|
mergeWorkspaceDraftState,
|
|
resolveIncidentPrimaryAction,
|
|
resolveNextWorkflowStep,
|
|
} from "@/components/displays/edgeGateway/edgeGatewayWorkspace.helpers.js";
|
|
|
|
describe("edge gateway workflow helpers", () => {
|
|
it("derives the next workflow step from selection state", () => {
|
|
expect(resolveNextWorkflowStep("select", false)).toBe("select");
|
|
expect(resolveNextWorkflowStep("manage", false)).toBe("manage");
|
|
expect(resolveNextWorkflowStep("select", true)).toBe("assess");
|
|
expect(resolveNextWorkflowStep("configure", true)).toBe("configure");
|
|
expect(resolveNextWorkflowStep("manage", true)).toBe("manage");
|
|
});
|
|
|
|
it("maps backend recommended actions into guided workflow CTAs", () => {
|
|
expect(
|
|
resolveIncidentPrimaryAction({
|
|
transport_health: { recommended_action: "retry_discovery" },
|
|
fallback_summary: {},
|
|
})
|
|
).toMatchObject({
|
|
label: "Kør discovery nu",
|
|
targetStep: "configure",
|
|
kind: "trigger_discovery",
|
|
});
|
|
|
|
const offlineAction = resolveIncidentPrimaryAction({
|
|
status: "OFFLINE",
|
|
transport_health: {},
|
|
fallback_summary: {},
|
|
});
|
|
|
|
expect(offlineAction.targetStep).toBe("manage");
|
|
expect(offlineAction.kind).toBe("switch_step");
|
|
expect(offlineAction.label).toContain("gatewaystyring");
|
|
});
|
|
|
|
it("formats relay health rows with fallback and execution labels", () => {
|
|
const rows = buildRelayHealthRows(
|
|
{
|
|
relay_health: [
|
|
{
|
|
binding_id: 12,
|
|
relay_id: "M-7",
|
|
fallback_mode: "CLOUD_ONLY",
|
|
execution_path: "cloud",
|
|
device_freshness_state: "STALE",
|
|
reason: "device_stale",
|
|
},
|
|
],
|
|
},
|
|
[]
|
|
);
|
|
|
|
expect(rows).toHaveLength(1);
|
|
expect(rows[0]).toMatchObject({
|
|
fallbackModeLabel: "Kun cloud",
|
|
executionPathLabel: "Cloud fallback",
|
|
freshnessLabel: "Forældet",
|
|
reasonLabel: "Shelly-device er for gammelt i discovery",
|
|
});
|
|
});
|
|
|
|
it("preserves dirty editor state while merging fresh server data", () => {
|
|
const merged = mergeWorkspaceDraftState({
|
|
gateway: {
|
|
bindings: [{ relay_id: "M-1", device_id: "server-device", channel: 1 }],
|
|
label: "Server label",
|
|
is_primary: true,
|
|
department_transport_mode: "cloud",
|
|
},
|
|
currentState: {
|
|
editableBindings: [{ relay_id: "M-9", device_id: "draft-device", channel: 0 }],
|
|
gatewayLabel: "Draft label",
|
|
gatewayIsPrimary: false,
|
|
transportMode: "gateway",
|
|
},
|
|
dirtyState: {
|
|
bindings: true,
|
|
gatewayLabel: true,
|
|
gatewayIsPrimary: true,
|
|
transportMode: false,
|
|
},
|
|
});
|
|
|
|
expect(merged.editableBindings).toEqual([{ relay_id: "M-9", device_id: "draft-device", channel: 0 }]);
|
|
expect(merged.gatewayLabel).toBe("Draft label");
|
|
expect(merged.gatewayIsPrimary).toBe(false);
|
|
expect(merged.transportMode).toBe("cloud");
|
|
});
|
|
});
|