matcher/src/modules/ad/tests/integration/ad.repository.spec.ts

59 lines
1.8 KiB
TypeScript

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);
});
});
});