UNPKG

mock-typeorm

Version:

Never hit the database again while testing

57 lines (51 loc) 2.33 kB
import { EntityManager, SelectQueryBuilder, Repository } from 'typeorm'; type AllEntityManagerMethodObj = { [K in keyof EntityManager as EntityManager[K] extends (...args: any[]) => any ? K : never]: K; }; type EntityManagerSetMockMethods = keyof Omit<AllEntityManagerMethodObj, "createQueryBuilder" | "getRepository" | "getTreeRepository" | "getMongoRepository" | "withRepository" | "getCustomRepository" | "hasId" | "getId" | "create" | "merge" | "transaction">; type SelectQueryBuilderMethodObj = { [K in keyof SelectQueryBuilder<any> as SelectQueryBuilder<any>[K] extends (...args: any[]) => any ? K : never]: SelectQueryBuilder<any>[K]; }; type FilterMethods<T> = { [K in keyof SelectQueryBuilderMethodObj as SelectQueryBuilderMethodObj[K] extends (...args: any[]) => T ? K : never]: SelectQueryBuilderMethodObj[K]; }; type ExtractMethodNames<T> = keyof T; type SelfReferenceQueryBuilderMethods = Exclude<ExtractMethodNames<FilterMethods<SelectQueryBuilder<any>>>, "createQueryBuilder">; type QueryBuilderReturnMethods = ExtractMethodNames<FilterMethods<Promise<any>>>; type QueryBuilderMethods = ExtractMethodNames<FilterMethods<any>>; type AllRepositoryMethods = { [K in keyof Repository<any>]: K; }[keyof Repository<any>]; type RepositoryMethods = Exclude<AllRepositoryMethods, "createQueryBuilder">; type MockHelper<T> = { [RepositoryName: string]: { [repositoryMethodName: string]: T; }; }; type MockState = MockHelper<any>; type MockHistory = MockHelper<number>; type Methods = EntityManagerSetMockMethods | QueryBuilderReturnMethods | SelfReferenceQueryBuilderMethods | RepositoryMethods | QueryBuilderMethods; interface Constructor<T> { new (...args: any[]): T; } interface SetMock { toReturn(mockData: any, method?: Methods): this; reset(method?: Methods): void; } declare class MockTypeORM { mocks: MockState; mockHistory: MockHistory; __internal: any; constructor(); onMock(repository: string | Constructor<any>): SetMock; resetAll(): void; restore(): void; private mockDataSouceMethods; private mockCreateQueryRunner; private mockCreateQueryBuilder; private mockSelectQueryBuilderMethods; private mockRepositoryMethods; private mockEntityManagerMethods; private getRepositoryName; } export { MockTypeORM };