Refactor testing module for integration tests into re-usable function
This commit is contained in:
parent
7fa1ac7fe6
commit
0ef0a1dd39
|
@ -1,61 +1,15 @@
|
||||||
import {
|
|
||||||
AD_DIRECTION_ENCODER,
|
|
||||||
AD_MESSAGE_PUBLISHER,
|
|
||||||
AD_REPOSITORY,
|
|
||||||
} from '@modules/ad/ad.di-tokens';
|
|
||||||
import { AdMapper } from '@modules/ad/ad.mapper';
|
|
||||||
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
||||||
import { CreateAdProps, Frequency } from '@modules/ad/core/domain/ad.types';
|
import { CreateAdProps, Frequency } from '@modules/ad/core/domain/ad.types';
|
||||||
import { AdRepository } from '@modules/ad/infrastructure/ad.repository';
|
import { AdRepository } from '@modules/ad/infrastructure/ad.repository';
|
||||||
import { PrismaService } from '@modules/ad/infrastructure/prisma.service';
|
import { PrismaService } from '@modules/ad/infrastructure/prisma.service';
|
||||||
import { PostgresDirectionEncoder } from '@modules/geography/infrastructure/postgres-direction-encoder';
|
import { integrationTestingModule } from './integration.setup';
|
||||||
import { ConfigModule } from '@nestjs/config';
|
|
||||||
import { EventEmitterModule } from '@nestjs/event-emitter';
|
|
||||||
import { Test } from '@nestjs/testing';
|
|
||||||
|
|
||||||
describe('Ad Repository', () => {
|
describe('Ad Repository', () => {
|
||||||
let prismaService: PrismaService;
|
let prismaService: PrismaService;
|
||||||
let adRepository: AdRepository;
|
let adRepository: AdRepository;
|
||||||
|
|
||||||
const mockMessagePublisher = {
|
|
||||||
publish: jest.fn().mockImplementation(),
|
|
||||||
};
|
|
||||||
|
|
||||||
const mockLogger = {
|
|
||||||
log: jest.fn(),
|
|
||||||
warn: jest.fn(),
|
|
||||||
error: jest.fn(),
|
|
||||||
};
|
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
const module = await Test.createTestingModule({
|
({ prismaService, adRepository } = await integrationTestingModule());
|
||||||
imports: [
|
|
||||||
EventEmitterModule.forRoot(),
|
|
||||||
ConfigModule.forRoot({ isGlobal: true }),
|
|
||||||
],
|
|
||||||
providers: [
|
|
||||||
PrismaService,
|
|
||||||
AdMapper,
|
|
||||||
{
|
|
||||||
provide: AD_REPOSITORY,
|
|
||||||
useClass: AdRepository,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
provide: AD_MESSAGE_PUBLISHER,
|
|
||||||
useValue: mockMessagePublisher,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
provide: AD_DIRECTION_ENCODER,
|
|
||||||
useClass: PostgresDirectionEncoder,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
// disable logging
|
|
||||||
.setLogger(mockLogger)
|
|
||||||
.compile();
|
|
||||||
|
|
||||||
prismaService = module.get<PrismaService>(PrismaService);
|
|
||||||
adRepository = module.get<AdRepository>(AD_REPOSITORY);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
import {
|
||||||
|
AD_DIRECTION_ENCODER,
|
||||||
|
AD_MESSAGE_PUBLISHER,
|
||||||
|
AD_REPOSITORY,
|
||||||
|
} from '@modules/ad/ad.di-tokens';
|
||||||
|
import { AdMapper } from '@modules/ad/ad.mapper';
|
||||||
|
import { AdRepository } from '@modules/ad/infrastructure/ad.repository';
|
||||||
|
import { PrismaService } from '@modules/ad/infrastructure/prisma.service';
|
||||||
|
import { PostgresDirectionEncoder } from '@modules/geography/infrastructure/postgres-direction-encoder';
|
||||||
|
import { ConfigModule } from '@nestjs/config';
|
||||||
|
import { EventEmitterModule } from '@nestjs/event-emitter';
|
||||||
|
import { Test } from '@nestjs/testing';
|
||||||
|
|
||||||
|
export async function integrationTestingModule(): Promise<{
|
||||||
|
prismaService: PrismaService;
|
||||||
|
adRepository: AdRepository;
|
||||||
|
}> {
|
||||||
|
const mockMessagePublisher = {
|
||||||
|
publish: jest.fn().mockImplementation(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const mockLogger = {
|
||||||
|
log: jest.fn(),
|
||||||
|
warn: jest.fn(),
|
||||||
|
error: jest.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const module = await Test.createTestingModule({
|
||||||
|
imports: [
|
||||||
|
EventEmitterModule.forRoot(),
|
||||||
|
ConfigModule.forRoot({ isGlobal: true }),
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
PrismaService,
|
||||||
|
AdMapper,
|
||||||
|
{
|
||||||
|
provide: AD_REPOSITORY,
|
||||||
|
useClass: AdRepository,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: AD_MESSAGE_PUBLISHER,
|
||||||
|
useValue: mockMessagePublisher,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: AD_DIRECTION_ENCODER,
|
||||||
|
useClass: PostgresDirectionEncoder,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
.setLogger(mockLogger)
|
||||||
|
.compile();
|
||||||
|
|
||||||
|
return {
|
||||||
|
prismaService: module.get<PrismaService>(PrismaService),
|
||||||
|
adRepository: module.get<AdRepository>(AD_REPOSITORY),
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue