Files
pleno-vue/tests/unit/edge-gateway-workspace.spec.js
T

129 lines
8.1 KiB
JavaScript

import { readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
const root = process.cwd();
const managerSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayManager.vue"), "utf8");
const overviewSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayOverviewPage.vue"), "utf8");
const inventorySource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayInventoryPage.vue"), "utf8");
const tasksSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayTasksPage.vue"), "utf8");
const logsSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayLogsPage.vue"), "utf8");
const statisticsSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayStatisticsPage.vue"), "utf8");
const terminalSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayTerminalPage.vue"), "utf8");
const manageSource = readFileSync(join(root, "src/features/edgeGateways/EdgeGatewayManagePage.vue"), "utf8");
const routerSource = readFileSync(join(root, "src/router.js"), "utf8");
const edgeGatewaysPageSource = readFileSync(
join(root, "src/views/dashboards/superUserDashboard/EdgeGatewaysWorkspacePage.vue"),
"utf8"
);
const departmentWorkspaceSource = readFileSync(
join(root, "src/features/edgeGateways/EdgeGatewayDepartmentWorkspace.vue"),
"utf8"
);
const departmentGatewaysPageSource = readFileSync(
join(root, "src/views/dashboards/superUserDashboard/department/DepartmentGatewaysWorkspacePage.vue"),
"utf8"
);
const navigationSource = readFileSync(
join(root, "src/components/models/navigation/items/NavigationMenuItemsSuperUser.vue"),
"utf8"
);
const configurationNavigationSource = readFileSync(
join(root, "src/views/dashboards/superUserDashboard/configuration/SuperUserDashboardConfigurationNavigation.vue"),
"utf8"
);
describe("edge gateway workspace contract", () => {
it("splits the module UI into route-aligned overview, tasks, logs, statistics, terminal, inventory, and settings pages", () => {
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-status-diagnostics"');
expect(managerSource).toContain('id: "tasks"');
expect(managerSource).toContain('id: "logs"');
expect(managerSource).toContain('id: "statistics"');
expect(managerSource).toContain('id: "terminal"');
expect(managerSource).toContain('id: "settings"');
expect(managerSource).toContain("import EdgeGatewayOverviewPage");
expect(managerSource).toContain("import EdgeGatewayInventoryPage");
expect(managerSource).toContain("import EdgeGatewayTasksPage");
expect(managerSource).toContain("import EdgeGatewayLogsPage");
expect(managerSource).toContain("import EdgeGatewayStatisticsPage");
expect(managerSource).toContain("import EdgeGatewayTerminalPage");
expect(managerSource).toContain("import EdgeGatewayManagePage");
expect(overviewSource).toContain('data-testid="gateway-overview-page"');
expect(overviewSource).toContain('data-testid="gateway-open-full-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(tasksSource).toContain('data-testid="gateway-tasks-page"');
expect(tasksSource).toContain('data-testid="gateway-operation-cancel"');
expect(tasksSource).toContain('data-testid="gateway-operation-retry"');
expect(logsSource).toContain('data-testid="gateway-logs-page"');
expect(statisticsSource).toContain('data-testid="gateway-statistics-page"');
expect(terminalSource).toContain('data-testid="gateway-terminal-page"');
expect(terminalSource).toContain('data-testid="gateway-terminal-status"');
expect(manageSource).toContain('data-testid="gateway-settings-page"');
expect(manageSource).toContain('data-testid="gateway-rotate-confirmation"');
expect(manageSource).toContain('data-testid="gateway-delete-confirmation"');
expect(managerSource).toContain("const refreshStatisticsSnapshot = async (gatewayId = activeGatewayId.value) =>");
expect(managerSource).toContain(
'statisticsSnapshot.value = payload && typeof payload === "object" ? payload : {};'
);
expect(managerSource).toContain("if (statisticsSnapshot.value?.gateway) {");
expect(managerSource).toContain("setSelectedGatewaySnapshot(statisticsSnapshot.value.gateway);");
});
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(':route-driven="true"');
expect(edgeGatewaysPageSource).toContain(':allow-destructive="true"');
expect(departmentGatewaysPageSource).toContain("EdgeGatewayDepartmentWorkspace");
expect(departmentWorkspaceSource).toContain(':route-driven="false"');
expect(departmentWorkspaceSource).toContain(':allow-destructive="false"');
expect(departmentWorkspaceSource).toContain('@open-gateway-page="openGatewayPage"');
});
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: 'edgegatewaytasks'");
expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/tasks'");
expect(routerSource).toContain("name: 'edgegatewaylogs'");
expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/logs'");
expect(routerSource).toContain("name: 'edgegatewaystatistics'");
expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/statistics'");
expect(routerSource).toContain("name: 'edgegatewayterminal'");
expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/terminal'");
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("/tasks`");
expect(routerSource).toContain("name: 'edgegatewaysettings'");
expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/settings'");
expect(routerSource).toContain("name: 'edgegatewaymanage'");
expect(routerSource).toContain("path: '/superuser/configuration/edgegateway/:id/manage'");
expect(routerSource).toContain("/settings`");
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");
});
});