- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8 - Actualizaciones de configuracion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
101 lines
4.1 KiB
JavaScript
101 lines
4.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const testing_1 = require("@nestjs/testing");
|
|
const health_controller_1 = require("../health.controller");
|
|
const terminus_1 = require("@nestjs/terminus");
|
|
describe('HealthController', () => {
|
|
let controller;
|
|
let healthCheckService;
|
|
let typeOrmHealthIndicator;
|
|
beforeEach(async () => {
|
|
const module = await testing_1.Test.createTestingModule({
|
|
controllers: [health_controller_1.HealthController],
|
|
providers: [
|
|
{
|
|
provide: terminus_1.HealthCheckService,
|
|
useValue: {
|
|
check: jest.fn(),
|
|
},
|
|
},
|
|
{
|
|
provide: terminus_1.TypeOrmHealthIndicator,
|
|
useValue: {
|
|
pingCheck: jest.fn(),
|
|
},
|
|
},
|
|
],
|
|
}).compile();
|
|
controller = module.get(health_controller_1.HealthController);
|
|
healthCheckService = module.get(terminus_1.HealthCheckService);
|
|
typeOrmHealthIndicator = module.get(terminus_1.TypeOrmHealthIndicator);
|
|
});
|
|
afterEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
describe('check', () => {
|
|
it('should return health check result', async () => {
|
|
const mockResult = {
|
|
status: 'ok',
|
|
info: { database: { status: 'up' } },
|
|
error: {},
|
|
details: { database: { status: 'up' } },
|
|
};
|
|
healthCheckService.check.mockResolvedValue(mockResult);
|
|
const result = await controller.check();
|
|
expect(result).toEqual(mockResult);
|
|
expect(healthCheckService.check).toHaveBeenCalled();
|
|
});
|
|
it('should check database health', async () => {
|
|
healthCheckService.check.mockImplementation(async (checks) => {
|
|
for (const check of checks) {
|
|
await check();
|
|
}
|
|
return { status: 'ok', info: {}, error: {}, details: {} };
|
|
});
|
|
typeOrmHealthIndicator.pingCheck.mockResolvedValue({ database: { status: 'up' } });
|
|
await controller.check();
|
|
expect(typeOrmHealthIndicator.pingCheck).toHaveBeenCalledWith('database');
|
|
});
|
|
});
|
|
describe('live', () => {
|
|
it('should return liveness status', () => {
|
|
const result = controller.live();
|
|
expect(result.status).toBe('ok');
|
|
expect(result.timestamp).toBeDefined();
|
|
});
|
|
it('should include current timestamp', () => {
|
|
const before = new Date().getTime();
|
|
const result = controller.live();
|
|
const after = new Date().getTime();
|
|
const timestamp = new Date(result.timestamp).getTime();
|
|
expect(timestamp).toBeGreaterThanOrEqual(before);
|
|
expect(timestamp).toBeLessThanOrEqual(after);
|
|
});
|
|
});
|
|
describe('ready', () => {
|
|
it('should return readiness check result', async () => {
|
|
const mockResult = {
|
|
status: 'ok',
|
|
info: { database: { status: 'up' } },
|
|
error: {},
|
|
details: { database: { status: 'up' } },
|
|
};
|
|
healthCheckService.check.mockResolvedValue(mockResult);
|
|
const result = await controller.ready();
|
|
expect(result).toEqual(mockResult);
|
|
expect(healthCheckService.check).toHaveBeenCalled();
|
|
});
|
|
it('should check database for readiness', async () => {
|
|
healthCheckService.check.mockImplementation(async (checks) => {
|
|
for (const check of checks) {
|
|
await check();
|
|
}
|
|
return { status: 'ok', info: {}, error: {}, details: {} };
|
|
});
|
|
typeOrmHealthIndicator.pingCheck.mockResolvedValue({ database: { status: 'up' } });
|
|
await controller.ready();
|
|
expect(typeOrmHealthIndicator.pingCheck).toHaveBeenCalledWith('database');
|
|
});
|
|
});
|
|
});
|
|
//# sourceMappingURL=health.controller.spec.js.map
|