import { AdEntity } from '@modules/ad/core/domain/ad.entity'; import { Frequency } from '@modules/ad/core/domain/ad.types'; import { AdRepository } from '@modules/ad/infrastructure/ad.repository'; import { PrismaService } from '@modules/ad/infrastructure/prisma.service'; import { driverNiceMarseille, wednesday, weekdays } from './ad.fixtures'; import { integrationTestingModule } from './integration.setup'; describe('Ad Repository', () => { let prismaService: PrismaService; let adRepository: AdRepository; beforeAll(async () => { ({ prismaService, adRepository } = await integrationTestingModule()); }); afterAll(async () => { await prismaService.$disconnect(); }); beforeEach(async () => { await prismaService.ad.deleteMany(); }); describe('create', () => { it('should create a punctual ad', async () => { const beforeCount = await prismaService.ad.count(); const createAdProps = driverNiceMarseille( Frequency.PUNCTUAL, ['2023-02-01', '2023-02-01'], [wednesday('08:30')], ); const adToCreate = AdEntity.create(createAdProps); await adRepository.insertExtra(adToCreate, 'ad'); const afterCount = await prismaService.ad.count(); expect(afterCount - beforeCount).toBe(1); }); it('should create a recurrent ad', async () => { const beforeCount = await prismaService.ad.count(); const createAdProps = driverNiceMarseille( Frequency.RECURRENT, ['2023-02-01', '2024-01-31'], weekdays('08:30'), ); const adToCreate = AdEntity.create(createAdProps); await adRepository.insertExtra(adToCreate, 'ad'); const afterCount = await prismaService.ad.count(); expect(afterCount - beforeCount).toBe(1); }); }); });