- Introduced `.prettierrc.json` to enforce consistent code formatting across the project. - Updated unit and e2e test files to address formatting issues, improve readability, and ensure alignment with the new Prettier configuration.
82 lines
4.5 KiB
JavaScript
82 lines
4.5 KiB
JavaScript
import { readFileSync } from "node:fs";
|
|
import { join } from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
const workspaceSource = readFileSync(
|
|
join(process.cwd(), "src/components/displays/edgeGateway/EdgeGatewayWorkspace.vue"),
|
|
"utf8"
|
|
);
|
|
const routerSource = readFileSync(join(process.cwd(), "src/router.js"), "utf8");
|
|
const navSource = readFileSync(
|
|
join(process.cwd(), "src/views/dashboards/superUserDashboard/department/SuperUserDashboardDepartmentNavigation.vue"),
|
|
"utf8"
|
|
);
|
|
|
|
describe("edge gateway workspace contract", () => {
|
|
it("renders the redesigned workflow sections and delegates root shell UI to the terminal component", () => {
|
|
expect(workspaceSource).toContain("Valgt gateway");
|
|
expect(workspaceSource).toContain("Overblik");
|
|
expect(workspaceSource).toContain("Installation");
|
|
expect(workspaceSource).toContain("Shelly-enheder");
|
|
expect(workspaceSource).toContain("Bindinger");
|
|
expect(workspaceSource).toContain("Opdateringer");
|
|
expect(workspaceSource).toContain("Historik");
|
|
expect(workspaceSource).toContain('import EdgeGatewayTerminal from "./EdgeGatewayTerminal.vue";');
|
|
expect(workspaceSource).toContain("<EdgeGatewayTerminal");
|
|
expect(workspaceSource).toContain('@session-approved="handleShellSessionApproved"');
|
|
});
|
|
|
|
it("renders queued discovery/update flows and the API polling control channel", () => {
|
|
expect(workspaceSource).toContain("Generér installer");
|
|
expect(workspaceSource).toContain('aria-label="Installer afdeling"');
|
|
expect(workspaceSource).toContain("Kør discovery");
|
|
expect(workspaceSource).toContain("Styringskanal");
|
|
expect(workspaceSource).toContain("Latens");
|
|
expect(workspaceSource).toContain("CPU");
|
|
expect(workspaceSource).toContain("RAM");
|
|
expect(workspaceSource).toContain("Disk");
|
|
expect(workspaceSource).toContain("getControlChannelMeta");
|
|
expect(workspaceSource).toContain("buildGatewayMetricView");
|
|
expect(workspaceSource).toContain("system_metrics");
|
|
expect(workspaceSource).toContain("startGatewayRefreshLoop");
|
|
expect(workspaceSource).toContain("stopGatewayRefreshLoop");
|
|
expect(workspaceSource).toContain("Discovery er køet");
|
|
expect(workspaceSource).toContain("Opdatering er køet.");
|
|
expect(workspaceSource).toContain("resolveEdgeGatewayErrorMessage");
|
|
expect(workspaceSource).toContain("normalizeDisplayText");
|
|
expect(workspaceSource).toContain("decodeMojibakeText");
|
|
expect(workspaceSource).toContain(
|
|
"const displayErrorMessage = computed(() => decodeMojibakeText(normalizeDisplayText(errorMessage.value)));"
|
|
);
|
|
expect(workspaceSource).toContain("{{ displayErrorMessage }}");
|
|
expect(workspaceSource).toContain("Gateway-agenten er offline og kan ikke hente nye kommandoer lige nu.");
|
|
expect(workspaceSource).toContain("Gatewayen henter kommandoer og shell-events via API'et.");
|
|
expect(workspaceSource).toContain("Gem bindinger");
|
|
expect(workspaceSource).toContain("Planlæg opdatering");
|
|
expect(workspaceSource).toContain("Transporttilstand");
|
|
expect(workspaceSource).toContain("Break-glass adgang");
|
|
expect(workspaceSource).toContain("Gateway transport");
|
|
expect(workspaceSource).toContain("Afdelingens cutover");
|
|
expect(workspaceSource).toContain("align-self: start;");
|
|
expect(workspaceSource).toContain(".edge-form-grid--installer");
|
|
});
|
|
|
|
it("builds richer binding device options and keeps stale selections editable", () => {
|
|
expect(workspaceSource).toContain("const inventoryDeviceOptions = computed(() =>");
|
|
expect(workspaceSource).toContain("const buildInventoryOptionLabel =");
|
|
expect(workspaceSource).toContain("const getBindingInventoryDevice = (binding) =>");
|
|
expect(workspaceSource).toContain("const getBindingDeviceOptions = (binding) =>");
|
|
expect(workspaceSource).toContain("Mangler i discovery");
|
|
expect(workspaceSource).toContain("{{ bindingHelperText }}");
|
|
expect(workspaceSource).toContain("{{ emptyBindingStateDescription }}");
|
|
expect(workspaceSource).toContain('binding.local_ip = device.local_ip ?? "";');
|
|
expect(workspaceSource).toContain("binding.channel = channelOptions[0];");
|
|
});
|
|
|
|
it("registers fleet and department gateway routes in the router and navigation", () => {
|
|
expect(routerSource).toContain("path: '/superuser/gateways'");
|
|
expect(routerSource).toContain("path: '/superuser/departments/:departmentId/gateways'");
|
|
expect(navSource).toContain("'/superuser/departments/' + departmentId.value + '/gateways'");
|
|
});
|
|
});
|