integration-test-db.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { DataSource } from 'typeorm';
  2. import { File } from '../../src/entities';
  3. import { UserEntity } from '@d8d/user-module';
  4. /**
  5. * 测试数据工厂类
  6. */
  7. export class TestDataFactory {
  8. /**
  9. * 创建测试文件数据
  10. */
  11. static createFileData(overrides: Partial<File> = {}): Partial<File> {
  12. const timestamp = Date.now();
  13. return {
  14. name: `testfile_${timestamp}.txt`,
  15. type: 'text/plain',
  16. size: 1024,
  17. path: `/uploads/testfile_${timestamp}.txt`,
  18. description: `Test file ${timestamp}`,
  19. uploadUserId: 1,
  20. uploadTime: new Date(),
  21. ...overrides
  22. };
  23. }
  24. /**
  25. * 创建测试用户数据
  26. */
  27. static createUserData(overrides: Partial<UserEntity> = {}): Partial<UserEntity> {
  28. const timestamp = Date.now();
  29. return {
  30. username: `testuser_${timestamp}`,
  31. password: 'TestPassword123!',
  32. email: `test_${timestamp}@example.com`,
  33. phone: `138${timestamp.toString().slice(-8)}`,
  34. nickname: `Test User ${timestamp}`,
  35. name: `Test Name ${timestamp}`,
  36. isDisabled: 0,
  37. isDeleted: 0,
  38. ...overrides
  39. };
  40. }
  41. /**
  42. * 在数据库中创建测试文件
  43. */
  44. static async createTestFile(dataSource: DataSource, overrides: Partial<File> = {}): Promise<File> {
  45. const fileData = this.createFileData(overrides);
  46. const fileRepository = dataSource.getRepository(File);
  47. const file = fileRepository.create(fileData);
  48. return await fileRepository.save(file);
  49. }
  50. /**
  51. * 在数据库中创建测试用户
  52. */
  53. static async createTestUser(dataSource: DataSource, overrides: Partial<UserEntity> = {}): Promise<UserEntity> {
  54. const userData = this.createUserData(overrides);
  55. const userRepository = dataSource.getRepository(UserEntity);
  56. const user = userRepository.create(userData);
  57. return await userRepository.save(user);
  58. }
  59. }