template-saas/apps/backend/dist/modules/health/__tests__/health.controller.spec.js
rckrdmrd 50a821a415
Some checks failed
CI / Backend CI (push) Has been cancelled
CI / Frontend CI (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / CI Summary (push) Has been cancelled
[SIMCO-V38] feat: Actualizar a SIMCO v3.8.0
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Actualizaciones de configuracion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:08 -06:00

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