9aa7a51f0b
- 移除 Dashboard 相关的组件、特性和测试代码,简化项目结构。 - 更新 PageSkeleton 组件,默认渲染工具页面骨架。 - 修改 RouterContainer 和 RouterProvider 以适应新的默认路由策略,确保用户直接访问 timestamp 页面。 - 更新测试用例,确保在新结构下的功能正常。
59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
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']);
|
|
});
|
|
});
|