connection.mock.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { AbstractRepository, EntityManager, Repository } from 'typeorm';
  2. import { Type } from '../../../shared/shared-types';
  3. import { MockClass } from './testing-types';
  4. /**
  5. * A mock of the TypeORM Connection class for use in testing.
  6. */
  7. export class MockConnection {
  8. manager: MockEntityManager;
  9. private repositoryMap = new Map<Type<any>, any>();
  10. constructor() {
  11. this.manager = new MockEntityManager();
  12. this.manager.connection = this;
  13. }
  14. registerMockRepository<T extends Type<any>>(entity: T): MockRepository<T> {
  15. const repository = new MockRepository();
  16. this.repositoryMap.set(entity, repository);
  17. return repository;
  18. }
  19. getRepository<T extends Type<any>>(entity: T): MockRepository<T> {
  20. const repository = this.repositoryMap.get(entity);
  21. if (repository) {
  22. return repository;
  23. } else {
  24. throw new Error(
  25. `No mock repository registered for "${entity.name}". Use registerRepository() first.`,
  26. );
  27. }
  28. }
  29. }
  30. export class MockRepository<T> implements MockClass<Repository<T>> {
  31. manager: any;
  32. metadata: any;
  33. queryRunner: any;
  34. target: any;
  35. createQueryBuilder = jest.fn();
  36. hasId = jest.fn();
  37. getId = jest.fn();
  38. create = jest.fn();
  39. merge = jest.fn();
  40. preload = jest.fn();
  41. save = jest.fn();
  42. remove = jest.fn();
  43. insert = jest.fn();
  44. update = jest.fn();
  45. delete = jest.fn();
  46. count = jest.fn();
  47. find = jest.fn();
  48. findAndCount = jest.fn();
  49. findByIds = jest.fn();
  50. findOne = jest.fn();
  51. findOneOrFail = jest.fn();
  52. query = jest.fn();
  53. clear = jest.fn();
  54. increment = jest.fn();
  55. decrement = jest.fn();
  56. }
  57. export class MockEntityManager implements MockClass<EntityManager> {
  58. connection: any = {};
  59. queryRunner: any = {};
  60. transaction = jest.fn();
  61. query = jest.fn();
  62. createQueryBuilder = jest.fn();
  63. hasId = jest.fn();
  64. getId = jest.fn();
  65. create = jest.fn();
  66. merge = jest.fn();
  67. preload = jest.fn();
  68. save = jest.fn();
  69. remove = jest.fn();
  70. insert = jest.fn();
  71. update = jest.fn();
  72. delete = jest.fn();
  73. count = jest.fn();
  74. find = jest.fn();
  75. findAndCount = jest.fn();
  76. findByIds = jest.fn();
  77. findOne = jest.fn();
  78. findOneOrFail = jest.fn();
  79. clear = jest.fn();
  80. increment = jest.fn();
  81. decrement = jest.fn();
  82. getRepository = jest.fn();
  83. getTreeRepository = jest.fn();
  84. getMongoRepository = jest.fn();
  85. getCustomRepository = jest.fn();
  86. release = jest.fn();
  87. }