test-data-factory.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { DataSource } from 'typeorm';
  2. import { UserEntityMt } from '@d8d/core-module-mt/user-module-mt/entities';
  3. import { JWTUtil } from '@d8d/shared-utils';
  4. /**
  5. * 信用额度模块测试数据工厂类
  6. */
  7. export class CreditBalanceTestDataFactory {
  8. /**
  9. * 创建测试用户数据
  10. */
  11. static createUserData(overrides: Partial<UserEntityMt> = {}): Partial<UserEntityMt> {
  12. const timestamp = Math.floor(Math.random() * 100000);
  13. return {
  14. username: `test_user_${timestamp}`,
  15. password: 'test_password',
  16. nickname: '测试用户',
  17. registrationSource: 'web',
  18. state: 1,
  19. ...overrides
  20. };
  21. }
  22. /**
  23. * 在数据库中创建测试用户
  24. */
  25. static async createTestUser(dataSource: DataSource, tenantId: number, overrides: Partial<UserEntityMt> = {}): Promise<UserEntityMt> {
  26. const userData = this.createUserData({ tenantId, ...overrides });
  27. const userRepository = dataSource.getRepository(UserEntityMt);
  28. const user = userRepository.create(userData);
  29. return await userRepository.save(user);
  30. }
  31. /**
  32. * 为测试用户生成JWT token
  33. */
  34. static generateUserToken(user: UserEntityMt): string {
  35. return JWTUtil.generateToken({
  36. id: user.id,
  37. username: user.username,
  38. tenantId: user.tenantId
  39. });
  40. }
  41. /**
  42. * 为管理员生成JWT token
  43. */
  44. static generateAdminToken(tenantId: number): string {
  45. return JWTUtil.generateToken({
  46. id: 1,
  47. username: 'admin',
  48. tenantId
  49. });
  50. }
  51. }