style: 优化个人中心和偏好设置弹窗样式,重构工作入口为精致分屏布局并移除首字徽标
This commit is contained in:
@@ -78,27 +78,43 @@ describe("admin project route permissions", () => {
|
||||
expect(source).not.toContain("[SYSTEM_PERMISSION_MONITORING_METRICS]");
|
||||
});
|
||||
|
||||
it("keeps login landing independent from PM management backend access", () => {
|
||||
it("routes desktop login and missing-project flows through the dedicated entry chooser", () => {
|
||||
const source = readRouter();
|
||||
|
||||
expect(source).not.toContain("findPmAdminLandingPath");
|
||||
expect(source).not.toContain("pmAdminLandingModules");
|
||||
expect(source).toContain(' : studyStore.currentStudy\n ? "/project/overview"\n : "/admin/projects",');
|
||||
expect(source).toContain('path: "/desktop/project-entry"');
|
||||
expect(source).toContain('component: DesktopProjectEntry');
|
||||
expect(source).toContain("DesktopSessionRestore");
|
||||
expect(source).toContain("DESKTOP_SESSION_RESTORE_PATH");
|
||||
expect(source).toContain('if (isDesktopRuntime) {\n next({ path: "/desktop/project-entry" });');
|
||||
expect(source).toContain('isDesktopRuntime ? "/desktop/project-entry" : isAdmin ? "/admin/users" : "/admin/projects"');
|
||||
expect(source).toContain('if (isDesktopRuntime && token && !isAdmin && to.path.startsWith("/admin"))');
|
||||
expect(source).toContain('if (isDesktopRuntime && token && to.path === "/desktop/project-entry" && studyStore.currentStudy)');
|
||||
expect(source).toContain('if (token && !studyStore.currentStudy && !isDesktopRuntime)');
|
||||
});
|
||||
|
||||
it("validates restored session tokens through /me before entering protected routes", () => {
|
||||
const source = readRouter();
|
||||
const restoreGuardIndex = source.indexOf("if (!auth.user && getToken())");
|
||||
const fetchMeIndex = source.indexOf("await auth.fetchMe()", restoreGuardIndex);
|
||||
const logoutIndex = source.indexOf("await auth.logout()", fetchMeIndex);
|
||||
const restoreGuardIndex = source.indexOf("if (!auth.user && getToken() && !isDesktopSessionRestoreRoute)");
|
||||
const fetchMeIndex = source.indexOf("await auth.fetchMe({ disableNetworkRetry: true, suppressErrorMessage: true })", restoreGuardIndex);
|
||||
const preserveIndex = source.indexOf("shouldPreserveDesktopSessionOnAuthCheckFailure(error)", fetchMeIndex);
|
||||
const restoreRedirectIndex = source.indexOf("next({ path: DESKTOP_SESSION_RESTORE_PATH", preserveIndex);
|
||||
const logoutIndex = source.indexOf("await auth.logout()", restoreRedirectIndex);
|
||||
const loginRedirectIndex = source.indexOf('next({ path: "/login" })', logoutIndex);
|
||||
const projectFallbackIndex = source.indexOf("if (token && !studyStore.currentStudy)", restoreGuardIndex);
|
||||
const projectFallbackIndex = source.indexOf("if (token && !studyStore.currentStudy && !isDesktopRuntime)", restoreGuardIndex);
|
||||
|
||||
expect(restoreGuardIndex).toBeGreaterThan(-1);
|
||||
expect(fetchMeIndex).toBeGreaterThan(restoreGuardIndex);
|
||||
expect(logoutIndex).toBeGreaterThan(fetchMeIndex);
|
||||
expect(preserveIndex).toBeGreaterThan(fetchMeIndex);
|
||||
expect(restoreRedirectIndex).toBeGreaterThan(preserveIndex);
|
||||
expect(logoutIndex).toBeGreaterThan(restoreRedirectIndex);
|
||||
expect(loginRedirectIndex).toBeGreaterThan(logoutIndex);
|
||||
expect(fetchMeIndex).toBeLessThan(projectFallbackIndex);
|
||||
expect(source).toContain("const isDesktopSessionRestoreRoute = to.path === DESKTOP_SESSION_RESTORE_PATH");
|
||||
expect(source).toContain("!isDesktopSessionRestoreRoute");
|
||||
expect(source).toContain("disableNetworkRetry: true");
|
||||
expect(source).toContain("suppressErrorMessage: true");
|
||||
});
|
||||
|
||||
it("does not register the removed non-admin personal dashboard route", () => {
|
||||
|
||||
Reference in New Issue
Block a user