feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
import { SmartTestSelector, TestSelectionResult } from '../scripts/smart-test-selector';
|
||||
import { testMapping, moduleToTests } from '../config/test-mapping.config';
|
||||
|
||||
describe('SmartTestSelector', () => {
|
||||
let selector: SmartTestSelector;
|
||||
|
||||
beforeEach(() => {
|
||||
selector = new SmartTestSelector();
|
||||
});
|
||||
|
||||
describe('selectTestsByChanges', () => {
|
||||
it('应该正确选择用户管理模块的测试', () => {
|
||||
const changedFiles = [
|
||||
'everything-is-suitable-admin/src/views/UserManagement.vue',
|
||||
];
|
||||
|
||||
const result = selector.selectTestsByChanges(changedFiles);
|
||||
|
||||
expect(result.selectedTests).toContain('e2e/user-management/*.spec.ts');
|
||||
expect(result.affectedModules).toContain('user-management');
|
||||
expect(result.changedFiles).toEqual(changedFiles);
|
||||
});
|
||||
|
||||
it('应该正确选择API相关的测试', () => {
|
||||
const changedFiles = [
|
||||
'everything-is-suitable-admin/src/api/user.ts',
|
||||
];
|
||||
|
||||
const result = selector.selectTestsByChanges(changedFiles);
|
||||
|
||||
expect(result.selectedTests).toContain('e2e/user-management/*.spec.ts');
|
||||
expect(result.selectedTests).toContain('e2e/api/user-api.spec.ts');
|
||||
expect(result.affectedModules).toContain('user-management');
|
||||
expect(result.affectedModules).toContain('api');
|
||||
});
|
||||
|
||||
it('应该正确处理多个变更文件', () => {
|
||||
const changedFiles = [
|
||||
'everything-is-suitable-admin/src/views/UserManagement.vue',
|
||||
'everything-is-suitable-admin/src/api/user.ts',
|
||||
'everything-is-suitable-admin/src/stores/user.ts',
|
||||
];
|
||||
|
||||
const result = selector.selectTestsByChanges(changedFiles);
|
||||
|
||||
expect(result.selectedTests.length).toBeGreaterThan(0);
|
||||
expect(result.affectedModules).toContain('user-management');
|
||||
expect(result.affectedModules).toContain('api');
|
||||
});
|
||||
|
||||
it('应该正确处理未映射的文件', () => {
|
||||
const changedFiles = [
|
||||
'everything-is-suitable-admin/src/views/UnknownFeature.vue',
|
||||
];
|
||||
|
||||
const result = selector.selectTestsByChanges(changedFiles);
|
||||
|
||||
expect(result.selectedTests).toEqual([]);
|
||||
expect(result.affectedModules).toEqual([]);
|
||||
expect(result.analysisReport).toContain('变更文件');
|
||||
});
|
||||
|
||||
it('应该正确过滤优先级', () => {
|
||||
const changedFiles = [
|
||||
'everything-is-suitable-admin/src/views/UserManagement.vue',
|
||||
'everything-is-suitable-admin/src/views/RoleManagement.vue',
|
||||
];
|
||||
|
||||
const result = selector.selectTestsByChanges(changedFiles, {
|
||||
priority: 'high',
|
||||
});
|
||||
|
||||
result.selectedTests.forEach(test => {
|
||||
expect(test).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
it('应该正确处理关联分析', () => {
|
||||
const changedFiles = [
|
||||
'everything-is-suitable-admin/src/views/UserManagement.vue',
|
||||
];
|
||||
|
||||
const resultWithRelated = selector.selectTestsByChanges(changedFiles, {
|
||||
includeRelated: true,
|
||||
});
|
||||
|
||||
const resultWithoutRelated = selector.selectTestsByChanges(changedFiles, {
|
||||
includeRelated: false,
|
||||
});
|
||||
|
||||
expect(resultWithRelated.selectedTests.length).toBeGreaterThanOrEqual(
|
||||
resultWithoutRelated.selectedTests.length
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('normalizePath', () => {
|
||||
it('应该正确标准化路径', () => {
|
||||
const selector = new SmartTestSelector();
|
||||
|
||||
expect((selector as any).normalizePath('src/views/Test.vue')).toBe('src/views/Test.vue');
|
||||
expect((selector as any).normalizePath('./src/views/Test.vue')).toBe('src/views/Test.vue');
|
||||
expect((selector as any).normalizePath('/absolute/path/Test.vue')).toBe('/absolute/path/Test.vue');
|
||||
});
|
||||
});
|
||||
|
||||
describe('findMapping', () => {
|
||||
it('应该找到精确匹配的映射', () => {
|
||||
const selector = new SmartTestSelector();
|
||||
const mapping = (selector as any).findMapping('everything-is-suitable-admin/src/views/UserManagement.vue');
|
||||
|
||||
expect(mapping).toBeDefined();
|
||||
expect(mapping.tests).toContain('e2e/user-management/*.spec.ts');
|
||||
expect(mapping.priority).toBe('high');
|
||||
expect(mapping.modules).toContain('user-management');
|
||||
});
|
||||
|
||||
it('应该找到模糊匹配的映射', () => {
|
||||
const selector = new SmartTestSelector();
|
||||
const mapping = (selector as any).findMapping('everything-is-suitable-admin/src/api/new-api.ts');
|
||||
|
||||
expect(mapping).toBeDefined();
|
||||
if (mapping) {
|
||||
expect(mapping.tests).toBeDefined();
|
||||
}
|
||||
});
|
||||
|
||||
it('应该返回null当没有匹配时', () => {
|
||||
const selector = new SmartTestSelector();
|
||||
const mapping = (selector as any).findMapping('unknown/path/file.ts');
|
||||
|
||||
expect(mapping).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('addRelatedTests', () => {
|
||||
it('应该添加相关模块的测试', () => {
|
||||
const selector = new SmartTestSelector();
|
||||
const selectedTests = new Set<string>();
|
||||
const affectedModules = new Set<string>();
|
||||
|
||||
(selector as any).addRelatedTests(['user-management'], selectedTests, affectedModules);
|
||||
|
||||
expect(selectedTests.size).toBeGreaterThanOrEqual(0);
|
||||
expect(affectedModules.size).toBeGreaterThanOrEqual(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('generateAnalysisReport', () => {
|
||||
it('应该生成详细的分析报告', () => {
|
||||
const selector = new SmartTestSelector();
|
||||
const data = {
|
||||
changedFiles: ['src/views/Test.vue'],
|
||||
affectedModules: ['test-module'],
|
||||
selectedTests: ['e2e/test.spec.ts'],
|
||||
};
|
||||
|
||||
const report = (selector as any).generateAnalysisReport(data);
|
||||
|
||||
expect(report).toContain('变更文件');
|
||||
expect(report).toContain('受影响模块');
|
||||
expect(report).toContain('选中测试用例');
|
||||
expect(report).toContain('执行建议');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Test Mapping Configuration', () => {
|
||||
it('应该包含用户管理模块的映射', () => {
|
||||
expect(testMapping['everything-is-suitable-admin/src/views/UserManagement.vue']).toBeDefined();
|
||||
expect(testMapping['everything-is-suitable-admin/src/views/UserManagement.vue'].priority).toBe('high');
|
||||
});
|
||||
|
||||
it('应该包含角色管理模块的映射', () => {
|
||||
expect(testMapping['everything-is-suitable-admin/src/views/RoleManagement.vue']).toBeDefined();
|
||||
expect(testMapping['everything-is-suitable-admin/src/views/RoleManagement.vue'].priority).toBe('high');
|
||||
});
|
||||
|
||||
it('应该包含API的映射', () => {
|
||||
expect(testMapping['everything-is-suitable-admin/src/api/user.ts']).toBeDefined();
|
||||
expect(testMapping['everything-is-suitable-admin/src/api/user.ts'].modules).toContain('api');
|
||||
});
|
||||
|
||||
it('模块到测试的映射应该正确', () => {
|
||||
expect(moduleToTests['user-management']).toBeDefined();
|
||||
expect(moduleToTests['user-management']).toContain('e2e/user-management/*.spec.ts');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user