fix: 提升管理端启动与导航稳定性
- 等待初始路由就绪并提供可恢复的启动失败页面 - 收敛失效登录导航并按需加载 SVG 图标资源
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { resolveNavigationUserInfo } from './navigation-user-info';
|
||||
|
||||
describe('navigation user info', () => {
|
||||
it('uses cached user info without issuing a request', async () => {
|
||||
const cachedUserInfo = { id: 1 };
|
||||
const fetchUserInfo = vi.fn();
|
||||
|
||||
await expect(
|
||||
resolveNavigationUserInfo({
|
||||
cachedUserInfo,
|
||||
fetchUserInfo,
|
||||
getAccessToken: () => 'token',
|
||||
}),
|
||||
).resolves.toBe(cachedUserInfo);
|
||||
expect(fetchUserInfo).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('returns null after an expired token has been cleared', async () => {
|
||||
await expect(
|
||||
resolveNavigationUserInfo({
|
||||
cachedUserInfo: null,
|
||||
fetchUserInfo: () => Promise.reject(new Error('expired')),
|
||||
getAccessToken: () => null,
|
||||
}),
|
||||
).resolves.toBeNull();
|
||||
});
|
||||
|
||||
it('keeps non-authentication failures visible', async () => {
|
||||
const error = new Error('network unavailable');
|
||||
await expect(
|
||||
resolveNavigationUserInfo({
|
||||
cachedUserInfo: null,
|
||||
fetchUserInfo: () => Promise.reject(error),
|
||||
getAccessToken: () => 'token',
|
||||
}),
|
||||
).rejects.toBe(error);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user