- 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.
80 lines
4.4 KiB
JavaScript
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'");
|
|
});
|
|
});
|