fixed queryRaw for healthcheck, added health grpc controller test
This commit is contained in:
parent
d294049a28
commit
e407e915fa
|
@ -53,7 +53,7 @@ export abstract class PrismaRepositoryBase<
|
||||||
|
|
||||||
async healthCheck(): Promise<boolean> {
|
async healthCheck(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
await this.prisma.$queryRaw`SELECT 1`;
|
await this.prismaRaw.$queryRaw`SELECT 1`;
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Controller } from '@nestjs/common';
|
||||||
import { GrpcMethod } from '@nestjs/microservices';
|
import { GrpcMethod } from '@nestjs/microservices';
|
||||||
import { RepositoriesHealthIndicatorUseCase } from '../../core/usecases/repositories.health-indicator.usecase';
|
import { RepositoriesHealthIndicatorUseCase } from '../../core/usecases/repositories.health-indicator.usecase';
|
||||||
|
|
||||||
enum ServingStatus {
|
export enum ServingStatus {
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
SERVING = 1,
|
SERVING = 1,
|
||||||
NOT_SERVING = 2,
|
NOT_SERVING = 2,
|
||||||
|
@ -25,9 +25,9 @@ export class HealthGrpcController {
|
||||||
@GrpcMethod('Health', 'Check')
|
@GrpcMethod('Health', 'Check')
|
||||||
async check(
|
async check(
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
data: HealthCheckRequest,
|
data?: HealthCheckRequest,
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
metadata: any,
|
metadata?: any,
|
||||||
): Promise<HealthCheckResponse> {
|
): Promise<HealthCheckResponse> {
|
||||||
const healthCheck = await this.repositoriesHealthIndicatorUseCase.isHealthy(
|
const healthCheck = await this.repositoriesHealthIndicatorUseCase.isHealthy(
|
||||||
'repositories',
|
'repositories',
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
import { RepositoriesHealthIndicatorUseCase } from '@modules/health/core/usecases/repositories.health-indicator.usecase';
|
||||||
|
import {
|
||||||
|
HealthGrpcController,
|
||||||
|
ServingStatus,
|
||||||
|
} from '@modules/health/interface/grpc-controllers/health.grpc.controller';
|
||||||
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
|
||||||
|
const mockRepositoriesHealthIndicatorUseCase = {
|
||||||
|
isHealthy: jest
|
||||||
|
.fn()
|
||||||
|
.mockImplementationOnce(() => ({
|
||||||
|
repositories: {
|
||||||
|
status: 'up',
|
||||||
|
},
|
||||||
|
}))
|
||||||
|
.mockImplementationOnce(() => ({
|
||||||
|
repositories: {
|
||||||
|
status: 'down',
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('Health Grpc Controller', () => {
|
||||||
|
let healthGrpcController: HealthGrpcController;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: RepositoriesHealthIndicatorUseCase,
|
||||||
|
useValue: mockRepositoriesHealthIndicatorUseCase,
|
||||||
|
},
|
||||||
|
HealthGrpcController,
|
||||||
|
],
|
||||||
|
}).compile();
|
||||||
|
|
||||||
|
healthGrpcController =
|
||||||
|
module.get<HealthGrpcController>(HealthGrpcController);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
jest.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be defined', () => {
|
||||||
|
expect(healthGrpcController).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a Serving status ', async () => {
|
||||||
|
jest.spyOn(mockRepositoriesHealthIndicatorUseCase, 'isHealthy');
|
||||||
|
const servingStatus: { status: ServingStatus } =
|
||||||
|
await healthGrpcController.check();
|
||||||
|
expect(servingStatus).toEqual({
|
||||||
|
status: ServingStatus.SERVING,
|
||||||
|
});
|
||||||
|
expect(
|
||||||
|
mockRepositoriesHealthIndicatorUseCase.isHealthy,
|
||||||
|
).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a Not Serving status ', async () => {
|
||||||
|
jest.spyOn(mockRepositoriesHealthIndicatorUseCase, 'isHealthy');
|
||||||
|
const servingStatus: { status: ServingStatus } =
|
||||||
|
await healthGrpcController.check();
|
||||||
|
expect(servingStatus).toEqual({
|
||||||
|
status: ServingStatus.NOT_SERVING,
|
||||||
|
});
|
||||||
|
expect(
|
||||||
|
mockRepositoriesHealthIndicatorUseCase.isHealthy,
|
||||||
|
).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue