refactor: 移除 Dashboard 页面及相关功能,更新路由和组件逻辑

- 移除 Dashboard 相关的组件、特性和测试代码,简化项目结构。
- 更新 PageSkeleton 组件,默认渲染工具页面骨架。
- 修改 RouterContainer 和 RouterProvider 以适应新的默认路由策略,确保用户直接访问 timestamp 页面。
- 更新测试用例,确保在新结构下的功能正常。
This commit is contained in:
2026-07-05 22:02:25 +08:00
parent d21e970f56
commit 9aa7a51f0b
29 changed files with 233 additions and 535 deletions
@@ -0,0 +1,58 @@
import { describe, it, expect, vi, beforeEach } from 'vitest';
import * as featureConfig from '@/config/features';
import { resolveNavFeatures } from '../resolveNavFeatures';
describe('resolveNavFeatures', () => {
beforeEach(() => {
vi.restoreAllMocks();
});
it('应按 keys 顺序返回可见工具', () => {
const items = resolveNavFeatures(['jwt', 'timestamp'], ['timestamp', 'jwt']);
expect(items.map((item) => item.key)).toEqual(['jwt', 'timestamp']);
expect(items.map((item) => item.feature.label)).toEqual(['JWT 解析', '时间戳']);
});
it('缺少 themeColorKey 但有 icon 的工具仍应显示', () => {
const originalGetFeatureByKey = featureConfig.getFeatureByKey;
vi.spyOn(featureConfig, 'getFeatureByKey').mockImplementation((key) => {
const feature = originalGetFeatureByKey(key);
if (key === 'timestamp' && feature) {
return { ...feature, themeColorKey: undefined };
}
return feature;
});
const items = resolveNavFeatures(['timestamp'], ['timestamp']);
expect(items.map((item) => item.key)).toEqual(['timestamp']);
});
it('应过滤不在 visiblePages 中的工具', () => {
const items = resolveNavFeatures(['jwt', 'timestamp'], ['timestamp']);
expect(items.map((item) => item.key)).toEqual(['timestamp']);
});
it('visiblePages 无匹配工具时应返回空列表', () => {
const items = resolveNavFeatures(['jwt', 'timestamp'], []);
expect(items).toEqual([]);
});
it('应过滤缺少 icon 的工具', () => {
const originalGetFeatureByKey = featureConfig.getFeatureByKey;
vi.spyOn(featureConfig, 'getFeatureByKey').mockImplementation((key) => {
const feature = originalGetFeatureByKey(key);
if (key === 'jwt' && feature) {
return { ...feature, icon: undefined };
}
return feature;
});
const items = resolveNavFeatures(['jwt', 'timestamp'], ['jwt', 'timestamp']);
expect(items.map((item) => item.key)).toEqual(['timestamp']);
});
});