Files
ctms/frontend/src/views/DesktopProjectEntry.test.ts
T
Cheng Zhou ab59476d10
Client Quality Gates / Shared client and Web (push) Has been cancelled
Client Quality Gates / macOS Desktop (push) Has been cancelled
feat(桌面与监控): 完善工作台导航和登录活动定位
- 优化桌面标签、上下文标题、前进后退、导航栏隐藏和原生菜单体验

- 补充登录会话 IP 采集、地理位置回退、管理端展示及数据库迁移

- 更新桌面发布检查、运维文档和前后端测试覆盖
2026-07-13 16:03:20 +08:00

45 lines
2.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
const readEntryView = () => readFileSync(resolve(__dirname, "./DesktopProjectEntry.vue"), "utf8");
describe("DesktopProjectEntry", () => {
it("offers system management access only to admins and authorized project PMs", () => {
const source = readEntryView();
expect(source).toContain("工作台总控");
expect(source).toContain("选择目标项目");
expect(source).toContain("Desktop Workbench");
expect(source).toContain('class="entry-background-grid"');
expect(source).toContain("系统管理");
expect(source).toContain("<strong>系统管理</strong>");
expect(source).toContain('class="admin-arrow"');
expect(source).toContain('loggingOut ? "正在退出" : "退出登录"');
expect(source).toContain('<AccountConnectionStatus mode="network" />');
expect(source).not.toContain("当前操作员");
expect(source).not.toContain('class="admin-desc"');
expect(source).toContain('v-if="canEnterManagement"');
expect(source).toContain('projects.value.some((project) => project.role_in_study === "PM")');
expect(source).toContain("project-cards-grid");
expect(source).toContain("card-action-bar");
expect(source).toContain("进入项目工作空间");
expect(source).toContain('v-if="isAdmin || project.role_in_study"');
expect(source).toContain('<span class="meta-label">我的角色</span>');
expect(source).toContain('isAdmin.value ? "系统管理员" : project.role_in_study || "未分配"');
expect(source).not.toContain('project.role_in_study && !isAdmin');
expect(source).toContain('router.push(isAdmin.value ? "/admin/users" : "/admin/projects")');
expect(source).toContain("studyStore.clearCurrentStudy()");
expect(source).toContain("studyStore.setCurrentStudy(pmProject)");
expect(source).toContain("projects.value.find((project) => project.role_in_study === \"PM\")");
expect(source).toContain("fetchStudies()");
expect(source).toContain("studyStore.setCurrentStudy(project)");
expect(source).toContain("studyStore.loadCurrentStudyPermissions()");
expect(source).toContain("findFirstAccessibleProjectPath");
expect(source).toContain("当前账号暂无该项目可访问模块");
expect(source).toContain("forceLogout(LOGOUT_REASON_MANUAL)");
expect(source).not.toContain("Web Workbench");
expect(source).not.toContain("PROJECT ADMIN");
});
});