test-data-factory.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { DataSource } from 'typeorm';
  2. import { UserEntity } from '@d8d/core-module/user-module';
  3. import { Role } from '@d8d/core-module/user-module';
  4. import { DisabledPerson } from '@d8d/allin-disability-module/entities';
  5. import { UserType } from '@d8d/shared-types';
  6. /**
  7. * 测试数据工厂类
  8. */
  9. export class TestDataFactory {
  10. /**
  11. * 创建测试用户数据
  12. */
  13. static createUserData(overrides: Partial<UserEntity> = {}): Partial<UserEntity> {
  14. const timestamp = Date.now();
  15. return {
  16. username: `testuser_${timestamp}`,
  17. password: 'TestPassword123!',
  18. email: `test_${timestamp}@example.com`,
  19. phone: `138${timestamp.toString().slice(-8)}`,
  20. nickname: `Test User ${timestamp}`,
  21. name: `Test Name ${timestamp}`,
  22. isDisabled: 0,
  23. isDeleted: 0,
  24. ...overrides
  25. };
  26. }
  27. /**
  28. * 创建测试角色数据
  29. */
  30. static createRoleData(overrides: Partial<Role> = {}): Partial<Role> {
  31. const timestamp = Date.now();
  32. return {
  33. name: `test_role_${timestamp}`,
  34. description: `Test role description ${timestamp}`,
  35. ...overrides
  36. };
  37. }
  38. /**
  39. * 在数据库中创建测试用户
  40. */
  41. static async createTestUser(dataSource: DataSource, overrides: Partial<UserEntity> = {}): Promise<UserEntity> {
  42. const userData = this.createUserData(overrides);
  43. const userRepository = dataSource.getRepository(UserEntity);
  44. const user = userRepository.create(userData);
  45. return await userRepository.save(user);
  46. }
  47. /**
  48. * 在数据库中创建测试角色
  49. */
  50. static async createTestRole(dataSource: DataSource, overrides: Partial<Role> = {}): Promise<Role> {
  51. const roleData = this.createRoleData(overrides);
  52. const roleRepository = dataSource.getRepository(Role);
  53. const role = roleRepository.create(roleData);
  54. return await roleRepository.save(role);
  55. }
  56. /**
  57. * 创建测试残疾人数据
  58. */
  59. static createDisabledPersonData(overrides: Partial<DisabledPerson> = {}): Partial<DisabledPerson> {
  60. const timestamp = Date.now();
  61. return {
  62. name: `测试残疾人${timestamp}`,
  63. gender: '男',
  64. idCard: `11010119900101001${timestamp.toString().slice(-2)}`,
  65. disabilityId: `D123456${timestamp}`,
  66. disabilityType: '肢体残疾',
  67. disabilityLevel: '一级',
  68. idAddress: '北京市朝阳区',
  69. phone: `138${timestamp.toString().slice(-8)}`,
  70. province: '北京市',
  71. city: '北京市',
  72. district: '朝阳区',
  73. canDirectContact: 1,
  74. isInBlackList: 0,
  75. jobStatus: 0,
  76. ...overrides
  77. };
  78. }
  79. /**
  80. * 在数据库中创建测试残疾人
  81. */
  82. static async createTestDisabledPerson(dataSource: DataSource, overrides: Partial<DisabledPerson> = {}): Promise<DisabledPerson> {
  83. const personData = this.createDisabledPersonData(overrides);
  84. const personRepository = dataSource.getRepository(DisabledPerson);
  85. const person = personRepository.create(personData);
  86. return await personRepository.save(person);
  87. }
  88. /**
  89. * 创建测试人才用户(包含残疾人关联)
  90. */
  91. static async createTestTalentUser(dataSource: DataSource, overrides: Partial<UserEntity> = {}, personOverrides: Partial<DisabledPerson> = {}): Promise<{ user: UserEntity; person: DisabledPerson }> {
  92. // 先创建残疾人记录
  93. const person = await this.createTestDisabledPerson(dataSource, personOverrides);
  94. // 创建人才用户,关联残疾人记录
  95. const userData = this.createUserData({
  96. ...overrides,
  97. userType: UserType.TALENT,
  98. personId: person.id
  99. });
  100. const userRepository = dataSource.getRepository(UserEntity);
  101. const user = userRepository.create(userData);
  102. const savedUser = await userRepository.save(user);
  103. return { user: savedUser, person };
  104. }
  105. }