refactor(frontend): 重命名前端项目为 gym-manage-web
This commit is contained in:
@@ -0,0 +1,255 @@
|
||||
export interface UserData {
|
||||
username: string;
|
||||
nickname: string;
|
||||
email: string;
|
||||
phone: string;
|
||||
password: string;
|
||||
confirmPassword: string;
|
||||
}
|
||||
|
||||
export interface RoleData {
|
||||
roleName: string;
|
||||
roleKey: string;
|
||||
roleSort: number;
|
||||
status: string;
|
||||
}
|
||||
|
||||
export interface MenuData {
|
||||
menuName: string;
|
||||
menuType?: string;
|
||||
path?: string;
|
||||
component?: string;
|
||||
permission?: string;
|
||||
sort?: number;
|
||||
visible?: string;
|
||||
status?: string;
|
||||
}
|
||||
|
||||
export interface DictTypeData {
|
||||
dictName: string;
|
||||
dictType: string;
|
||||
status: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface DictDataData {
|
||||
dictLabel: string;
|
||||
dictValue: string;
|
||||
dictType: string;
|
||||
status: string;
|
||||
sort?: number;
|
||||
}
|
||||
|
||||
export class TestDataFactory {
|
||||
static generateTimestamp(): string {
|
||||
return Date.now().toString();
|
||||
}
|
||||
|
||||
static generateRandomString(length: number = 8): string {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
let result = '';
|
||||
for (let i = 0; i < length; i++) {
|
||||
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static generateValidEmail(username: string): string {
|
||||
return `${username}@example.com`;
|
||||
}
|
||||
|
||||
static generateValidPhone(): string {
|
||||
const prefix = ['138', '139', '150', '151', '186', '188'];
|
||||
const selectedPrefix = prefix[Math.floor(Math.random() * prefix.length)];
|
||||
const suffix = Math.floor(Math.random() * 100000000).toString().padStart(8, '0');
|
||||
return selectedPrefix + suffix;
|
||||
}
|
||||
|
||||
static generateValidPassword(): string {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
|
||||
let password = '';
|
||||
for (let i = 0; i < 12; i++) {
|
||||
password += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
return password;
|
||||
}
|
||||
|
||||
static createUser(suffix?: string): UserData {
|
||||
const timestamp = this.generateTimestamp();
|
||||
const uniqueSuffix = suffix || this.generateRandomString(4);
|
||||
|
||||
return {
|
||||
username: `testuser_${uniqueSuffix}_${timestamp}`,
|
||||
nickname: `测试用户_${uniqueSuffix}_${timestamp}`,
|
||||
email: this.generateValidEmail(`testuser_${uniqueSuffix}_${timestamp}`),
|
||||
phone: this.generateValidPhone(),
|
||||
password: this.generateValidPassword(),
|
||||
confirmPassword: this.generateValidPassword()
|
||||
};
|
||||
}
|
||||
|
||||
static createAdminUser(): UserData {
|
||||
return {
|
||||
username: 'admin',
|
||||
nickname: '管理员',
|
||||
email: 'admin@example.com',
|
||||
phone: '13800138000',
|
||||
password: 'admin123',
|
||||
confirmPassword: 'admin123'
|
||||
};
|
||||
}
|
||||
|
||||
static createRole(suffix?: string): RoleData {
|
||||
const timestamp = this.generateTimestamp();
|
||||
const uniqueSuffix = suffix || this.generateRandomString(4);
|
||||
|
||||
return {
|
||||
roleName: `testrole_${uniqueSuffix}_${timestamp}`,
|
||||
roleKey: `test_role_${uniqueSuffix}_${timestamp}`,
|
||||
roleSort: 1,
|
||||
status: '1'
|
||||
};
|
||||
}
|
||||
|
||||
static createAdminRole(): RoleData {
|
||||
return {
|
||||
roleName: '管理员',
|
||||
roleKey: 'admin',
|
||||
roleSort: 1,
|
||||
status: '1'
|
||||
};
|
||||
}
|
||||
|
||||
static createMenu(suffix?: string, parentId?: string): MenuData {
|
||||
const timestamp = this.generateTimestamp();
|
||||
const uniqueSuffix = suffix || this.generateRandomString(4);
|
||||
|
||||
return {
|
||||
menuName: `测试菜单_${uniqueSuffix}_${timestamp}`,
|
||||
menuType: 'M',
|
||||
path: `/testmenu_${uniqueSuffix}_${timestamp}`,
|
||||
component: `TestMenu${uniqueSuffix}`,
|
||||
permission: `system:testmenu:${uniqueSuffix}:${timestamp}`,
|
||||
sort: 1,
|
||||
visible: '0',
|
||||
status: '0'
|
||||
};
|
||||
}
|
||||
|
||||
static createSubMenu(parentId: string, suffix?: string): MenuData {
|
||||
const menuData = this.createMenu(suffix);
|
||||
menuData.menuType = 'C';
|
||||
menuData.path = `${menuData.path}/submenu`;
|
||||
return menuData;
|
||||
}
|
||||
|
||||
static createDictType(suffix?: string): DictTypeData {
|
||||
const timestamp = this.generateTimestamp();
|
||||
const uniqueSuffix = suffix || this.generateRandomString(4);
|
||||
|
||||
return {
|
||||
dictName: `测试字典类型_${uniqueSuffix}_${timestamp}`,
|
||||
dictType: `test_dict_type_${uniqueSuffix}_${timestamp}`,
|
||||
status: '0',
|
||||
remark: `测试字典类型备注_${uniqueSuffix}_${timestamp}`
|
||||
};
|
||||
}
|
||||
|
||||
static createDictData(dictType: string, suffix?: string): DictDataData {
|
||||
const timestamp = this.generateTimestamp();
|
||||
const uniqueSuffix = suffix || this.generateRandomString(4);
|
||||
|
||||
return {
|
||||
dictLabel: `测试字典数据_${uniqueSuffix}_${timestamp}`,
|
||||
dictValue: `test_dict_value_${uniqueSuffix}_${timestamp}`,
|
||||
dictType: dictType,
|
||||
status: '0',
|
||||
sort: 1
|
||||
};
|
||||
}
|
||||
|
||||
static createBatchUsers(count: number): UserData[] {
|
||||
const users: UserData[] = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
users.push(this.createUser(`batch_${i}`));
|
||||
}
|
||||
return users;
|
||||
}
|
||||
|
||||
static createBatchRoles(count: number): RoleData[] {
|
||||
const roles: RoleData[] = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
roles.push(this.createRole(`batch_${i}`));
|
||||
}
|
||||
return roles;
|
||||
}
|
||||
|
||||
static createBatchMenus(count: number): MenuData[] {
|
||||
const menus: MenuData[] = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
menus.push(this.createMenu(`batch_${i}`));
|
||||
}
|
||||
return menus;
|
||||
}
|
||||
|
||||
static createBatchDictTypes(count: number): DictTypeData[] {
|
||||
const dictTypes: DictTypeData[] = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
dictTypes.push(this.createDictType(`batch_${i}`));
|
||||
}
|
||||
return dictTypes;
|
||||
}
|
||||
|
||||
static createBatchDictData(dictType: string, count: number): DictDataData[] {
|
||||
const dictData: DictDataData[] = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
dictData.push(this.createDictData(dictType, `batch_${i}`));
|
||||
}
|
||||
return dictData;
|
||||
}
|
||||
|
||||
static createInvalidUser(): UserData {
|
||||
return {
|
||||
username: '',
|
||||
nickname: '',
|
||||
email: 'invalid-email',
|
||||
phone: 'invalid-phone',
|
||||
password: 'weak',
|
||||
confirmPassword: 'different'
|
||||
};
|
||||
}
|
||||
|
||||
static createInvalidRole(): RoleData {
|
||||
return {
|
||||
roleName: '',
|
||||
roleKey: '',
|
||||
roleSort: -1,
|
||||
status: 'invalid'
|
||||
};
|
||||
}
|
||||
|
||||
static createInvalidMenu(): MenuData {
|
||||
return {
|
||||
menuName: '',
|
||||
menuType: 'invalid',
|
||||
path: '',
|
||||
component: '',
|
||||
permission: '',
|
||||
sort: -1,
|
||||
visible: 'invalid',
|
||||
status: 'invalid'
|
||||
};
|
||||
}
|
||||
|
||||
static createLongString(length: number = 1000): string {
|
||||
return this.generateRandomString(length);
|
||||
}
|
||||
|
||||
static createSpecialCharsString(): string {
|
||||
return '!@#$%^&*()_+-=[]{}|;:,.<>?/~`';
|
||||
}
|
||||
|
||||
static createUnicodeString(): string {
|
||||
return '测试中文🎉🚀';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user