Merge branch 'improveTests' into 'main'
improve tests See merge request v3/service/user!34
This commit is contained in:
commit
b0eba668aa
|
@ -2,6 +2,7 @@
|
||||||
SERVICE_URL=0.0.0.0
|
SERVICE_URL=0.0.0.0
|
||||||
SERVICE_PORT=5001
|
SERVICE_PORT=5001
|
||||||
SERVICE_CONFIGURATION_DOMAIN=USER
|
SERVICE_CONFIGURATION_DOMAIN=USER
|
||||||
|
HEALTH_SERVICE_PORT=6001
|
||||||
|
|
||||||
# PRISMA
|
# PRISMA
|
||||||
DATABASE_URL="postgresql://mobicoop:mobicoop@v3-db:5432/mobicoop?schema=user"
|
DATABASE_URL="postgresql://mobicoop:mobicoop@v3-db:5432/mobicoop?schema=user"
|
||||||
|
|
|
@ -14,7 +14,7 @@ services:
|
||||||
command: npm run start:dev
|
command: npm run start:dev
|
||||||
ports:
|
ports:
|
||||||
- ${SERVICE_PORT:-5001}:${SERVICE_PORT:-5001}
|
- ${SERVICE_PORT:-5001}:${SERVICE_PORT:-5001}
|
||||||
- 6001:6001
|
- ${HEALTH_SERVICE_PORT:-6001}:${HEALTH_SERVICE_PORT:-6001}
|
||||||
networks:
|
networks:
|
||||||
v3-network:
|
v3-network:
|
||||||
aliases:
|
aliases:
|
||||||
|
|
|
@ -22,6 +22,6 @@ async function bootstrap() {
|
||||||
});
|
});
|
||||||
|
|
||||||
await app.startAllMicroservices();
|
await app.startAllMicroservices();
|
||||||
await app.listen(6001);
|
await app.listen(process.env.HEALTH_SERVICE_PORT);
|
||||||
}
|
}
|
||||||
bootstrap();
|
bootstrap();
|
||||||
|
|
|
@ -4,7 +4,7 @@ import {
|
||||||
HealthIndicator,
|
HealthIndicator,
|
||||||
HealthIndicatorResult,
|
HealthIndicatorResult,
|
||||||
} from '@nestjs/terminus';
|
} from '@nestjs/terminus';
|
||||||
import { UsersRepository } from 'src/modules/user/adapters/secondaries/users.repository';
|
import { UsersRepository } from '../../../user/adapters/secondaries/users.repository';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class PrismaHealthIndicatorUseCase extends HealthIndicator {
|
export class PrismaHealthIndicatorUseCase extends HealthIndicator {
|
||||||
|
|
|
@ -41,7 +41,7 @@ describe('Messager', () => {
|
||||||
|
|
||||||
it('should publish a message', async () => {
|
it('should publish a message', async () => {
|
||||||
jest.spyOn(mockAmqpConnection, 'publish');
|
jest.spyOn(mockAmqpConnection, 'publish');
|
||||||
messager.publish('user.create.info', 'my-test');
|
messager.publish('test.create.info', 'my-test');
|
||||||
expect(mockAmqpConnection.publish).toHaveBeenCalledTimes(1);
|
expect(mockAmqpConnection.publish).toHaveBeenCalledTimes(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
import { PrismaHealthIndicatorUseCase } from '../../domain/usecases/prisma.health-indicator.usecase';
|
||||||
|
import { UsersRepository } from '../../../user/adapters/secondaries/users.repository';
|
||||||
|
import { PrismaClientKnownRequestError } from '@prisma/client/runtime';
|
||||||
|
import { HealthCheckError, HealthIndicatorResult } from '@nestjs/terminus';
|
||||||
|
|
||||||
|
const mockUsersRepository = {
|
||||||
|
healthCheck: jest
|
||||||
|
.fn()
|
||||||
|
.mockImplementationOnce(() => {
|
||||||
|
return Promise.resolve(true);
|
||||||
|
})
|
||||||
|
.mockImplementation(() => {
|
||||||
|
throw new PrismaClientKnownRequestError('Service unavailable', {
|
||||||
|
code: 'code',
|
||||||
|
clientVersion: 'version',
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('PrismaHealthIndicatorUseCase', () => {
|
||||||
|
let prismaHealthIndicatorUseCase: PrismaHealthIndicatorUseCase;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: UsersRepository,
|
||||||
|
useValue: mockUsersRepository,
|
||||||
|
},
|
||||||
|
PrismaHealthIndicatorUseCase,
|
||||||
|
],
|
||||||
|
}).compile();
|
||||||
|
|
||||||
|
prismaHealthIndicatorUseCase = module.get<PrismaHealthIndicatorUseCase>(
|
||||||
|
PrismaHealthIndicatorUseCase,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be defined', () => {
|
||||||
|
expect(prismaHealthIndicatorUseCase).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('execute', () => {
|
||||||
|
it('should check health successfully', async () => {
|
||||||
|
const healthIndicatorResult: HealthIndicatorResult =
|
||||||
|
await prismaHealthIndicatorUseCase.isHealthy('prisma');
|
||||||
|
|
||||||
|
expect(healthIndicatorResult['prisma'].status).toBe('up');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw an error if database is unavailable', async () => {
|
||||||
|
await expect(
|
||||||
|
prismaHealthIndicatorUseCase.isHealthy('prisma'),
|
||||||
|
).rejects.toBeInstanceOf(HealthCheckError);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue