import 'reflect-metadata' import { Repository, SelectQueryBuilder } from 'typeorm' import { AnalyticsEntity } from '../../Domain/Entity/AnalyticsEntity' import { MySQLAnalyticsEntityRepository } from './MySQLAnalyticsEntityRepository' describe('MySQLAnalyticsEntityRepository', () => { let ormRepository: Repository let analyticsEntity: AnalyticsEntity let queryBuilder: SelectQueryBuilder const createRepository = () => new MySQLAnalyticsEntityRepository(ormRepository) beforeEach(() => { analyticsEntity = {} as jest.Mocked queryBuilder = {} as jest.Mocked> ormRepository = {} as jest.Mocked> ormRepository.save = jest.fn() ormRepository.createQueryBuilder = jest.fn().mockImplementation(() => queryBuilder) }) it('should save', async () => { await createRepository().save(analyticsEntity) expect(ormRepository.save).toHaveBeenCalledWith(analyticsEntity) }) it('should find one by user uuid', async () => { queryBuilder.where = jest.fn().mockReturnThis() queryBuilder.getOne = jest.fn().mockReturnValue(analyticsEntity) const result = await createRepository().findOneByUserUuid('123') expect(queryBuilder.where).toHaveBeenCalledWith('analytics_entity.user_uuid = :userUuid', { userUuid: '123' }) expect(result).toEqual(analyticsEntity) }) })