Files
pleno-vue/tests/unit/edge-gateway-workspace.spec.js
T
Jeppe Bundgaard f040614f46 Refactor module paths, layout responsiveness, and testing configurations:
- Replaced repetitive department module URL logic with `buildDepartmentModulePath` utility in `DepartmentModulesDisplay.vue`.
- Enhanced layouts and responsive behavior across components, including `PosDepartmentStep1MobileTransactionHistory.vue` and `DepartmentDailyReport.vue`.
- Removed unused `SuperuserInvoicingLocalStore.vue` and refactored to `SuperuserInvoicingLocalStore.ts`.
- Updated media query handling and card layout adjustments in `DepartmentDailyReport.vue`.
- Added new Playwright configurations (`playwright.prod.config.ts` and `playwright.live.config.ts`) for e2e release workflows.
- Extended e2e and unit test coverage for mobile POS and department modules.
2026-04-09 16:32:25 +02:00

80 lines
4.4 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 broker connectivity as separate UI signals", () => {
expect(workspaceSource).toContain("Generér installer");
expect(workspaceSource).toContain('aria-label="Installer afdeling"');
expect(workspaceSource).toContain("Kør discovery");
expect(workspaceSource).toContain("Brokerforbindelse");
expect(workspaceSource).toContain("Latens");
expect(workspaceSource).toContain("CPU");
expect(workspaceSource).toContain("RAM");
expect(workspaceSource).toContain("Disk");
expect(workspaceSource).toContain("getBrokerMeta");
expect(workspaceSource).toContain("buildGatewayMetricView");
expect(workspaceSource).toContain("system_metrics");
expect(workspaceSource).toContain("metadata.broker_connected");
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("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'");
});
});