import { readFileSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; const managerSource = readFileSync(join(process.cwd(), "src/features/edgeGateways/EdgeGatewayManager.vue"), "utf8"); const overviewSource = readFileSync( join(process.cwd(), "src/features/edgeGateways/EdgeGatewayOverviewPage.vue"), "utf8" ); const inventorySource = readFileSync( join(process.cwd(), "src/features/edgeGateways/EdgeGatewayInventoryPage.vue"), "utf8" ); const operationsSource = readFileSync( join(process.cwd(), "src/features/edgeGateways/EdgeGatewayOperationsPage.vue"), "utf8" ); const manageSource = readFileSync(join(process.cwd(), "src/features/edgeGateways/EdgeGatewayManagePage.vue"), "utf8"); const routerSource = readFileSync(join(process.cwd(), "src/router.js"), "utf8"); const edgeGatewaysPageSource = readFileSync( join(process.cwd(), "src/views/dashboards/superUserDashboard/EdgeGatewaysWorkspacePage.vue"), "utf8" ); const departmentWorkspaceSource = readFileSync( join(process.cwd(), "src/features/edgeGateways/EdgeGatewayDepartmentWorkspace.vue"), "utf8" ); const fleetLandingSource = readFileSync( join(process.cwd(), "src/features/edgeGateways/EdgeGatewayFleetLanding.vue"), "utf8" ); const departmentGatewaysPageSource = readFileSync( join(process.cwd(), "src/views/dashboards/superUserDashboard/department/DepartmentGatewaysWorkspacePage.vue"), "utf8" ); const navigationSource = readFileSync( join(process.cwd(), "src/components/models/navigation/items/NavigationMenuItemsSuperUser.vue"), "utf8" ); const configurationNavigationSource = readFileSync( join( process.cwd(), "src/views/dashboards/superUserDashboard/configuration/SuperUserDashboardConfigurationNavigation.vue" ), "utf8" ); describe("edge gateway workspace contract", () => { it("splits the module UI into overview, inventory, operations, and manage modules", () => { expect(managerSource).toContain('data-testid="edge-gateway-workspace"'); expect(managerSource).toContain('data-testid="gateway-summary-strip"'); expect(managerSource).toContain('data-testid="gateway-fleet-usage"'); expect(managerSource).toContain('data-testid="gateway-onboarding"'); expect(managerSource).toContain('data-testid="gateway-installer-status"'); expect(managerSource).toContain('data-testid="gateway-installer-status-step"'); expect(managerSource).toContain('data-testid="gateway-installer-status-state"'); expect(managerSource).toContain('data-testid="gateway-installer-copy-diagnostics"'); expect(managerSource).toContain("import EdgeGatewayOverviewPage"); expect(managerSource).toContain("import EdgeGatewayInventoryPage"); expect(managerSource).toContain("import EdgeGatewayOperationsPage"); expect(managerSource).toContain("import EdgeGatewayManagePage"); expect(overviewSource).toContain('data-testid="gateway-overview-page"'); expect(overviewSource).toContain('data-testid="gateway-overview-container-health"'); expect(overviewSource).toContain('data-testid="gateway-overview-container-services"'); expect(overviewSource).toContain('data-testid="gateway-overview-outbox"'); expect(overviewSource).toContain('data-testid="gateway-overview-update-window"'); expect(overviewSource).toContain('data-testid="gateway-overview-rollout"'); expect(inventorySource).toContain('data-testid="gateway-inventory-page"'); expect(operationsSource).toContain('data-testid="gateway-operations-page"'); expect(operationsSource).toContain('data-testid="gateway-operation-cancel"'); expect(operationsSource).toContain('data-testid="gateway-operation-retry"'); expect(manageSource).toContain('data-testid="gateway-manage-page"'); expect(manageSource).toContain('data-testid="gateway-rotate-confirmation"'); expect(manageSource).toContain('data-testid="gateway-delete-confirmation"'); }); it("mounts a module workspace and a safe-subset department workspace", () => { expect(edgeGatewaysPageSource).toContain('data-testid="edge-gateway-module-config"'); expect(edgeGatewaysPageSource).toContain("gateway-module-disabled-state"); expect(edgeGatewaysPageSource).toContain("import EdgeGatewayFleetLanding"); expect(edgeGatewaysPageSource).toContain(':route-driven="true"'); expect(edgeGatewaysPageSource).toContain(':allow-destructive="true"'); expect(departmentGatewaysPageSource).toContain("import EdgeGatewayDepartmentWorkspace"); expect(departmentGatewaysPageSource).toContain("Department Hardware Workspace"); expect(departmentGatewaysPageSource).toContain(" { expect(fleetLandingSource).toContain('data-testid="hardware-fleet-landing"'); expect(fleetLandingSource).toContain("hardware-fleet-card-departments"); expect(fleetLandingSource).toContain("hardware-fleet-open-workspace"); expect(departmentWorkspaceSource).toContain('data-testid="department-hardware-workspace"'); expect(departmentWorkspaceSource).toContain('data-testid="department-hardware-tab-gateways"'); expect(departmentWorkspaceSource).toContain('data-testid="department-hardware-panel-scanners"'); expect(departmentWorkspaceSource).toContain('data-testid="department-scanner-save-'); expect(departmentWorkspaceSource).toContain('data-testid="department-scanner-rotate-'); expect(departmentWorkspaceSource).toContain("Rotate API Key"); expect(departmentWorkspaceSource).toContain("Open Fleet Landing"); }); it("registers canonical module routes and keeps legacy redirects", () => { expect(routerSource).toContain("path: '/superuser/configuration/edgegateway'"); expect(routerSource).toContain("name: 'edgegatewayoverview'"); expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/overview'"); expect(routerSource).toContain("name: 'edgegatewayinventory'"); expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/inventory'"); expect(routerSource).toContain("name: 'edgegatewayoperations'"); expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/operations'"); expect(routerSource).toContain("name: 'edgegatewaymanage'"); expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/manage'"); expect(routerSource).toContain("path: '/superuser/gateways'"); expect(routerSource).toContain("configure: 'inventory'"); expect(routerSource).toContain("assess: 'overview'"); }); it("surfaces the module in superuser navigation and configuration tabs", () => { expect(navigationSource).toContain("/superuser/configuration/edgegateway"); expect(configurationNavigationSource).toContain("Edge Gateway"); expect(configurationNavigationSource).toContain("/superuser/configuration/edgegateway"); }); });