122 lines
6.8 KiB
JavaScript
122 lines
6.8 KiB
JavaScript
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("<EdgeGatewayDepartmentWorkspace");
|
|
});
|
|
|
|
it("adds department-centric fleet landing and integrated hardware workspace surfaces", () => {
|
|
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");
|
|
});
|
|
});
|