Skip to content

Commit 8592673

Browse files
committed
feat: add more tests to improve coverage
1 parent 45bb27f commit 8592673

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*!
2+
* IMQService logger fallback branches coverage tests
3+
*/
4+
import { expect } from 'chai';
5+
import * as sinon from 'sinon';
6+
import { uuid } from '@imqueue/core';
7+
import { IMQService, IMQRPCRequest, expose, BEFORE_HOOK_ERROR, AFTER_HOOK_ERROR } from '..';
8+
9+
class FallbackLoggerService extends IMQService {
10+
@expose()
11+
public ping() { return 'pong'; }
12+
}
13+
14+
describe('IMQService logger fallback branches', () => {
15+
beforeEach(() => sinon.restore());
16+
17+
it('should use console (fallback) inside handleRequest when beforeCall throws and options.logger is undefined', async () => {
18+
const warnStub = sinon.stub(console, 'warn' as any).callsFake(() => {});
19+
const beforeCall = async () => { throw new Error('boom'); };
20+
// Explicitly override default logger to undefined to force fallback branch
21+
const service: any = new FallbackLoggerService({ beforeCall, logger: undefined as any });
22+
23+
const request: IMQRPCRequest = { from: 'Client', method: 'ping', args: [] };
24+
const id = uuid();
25+
26+
await service.start();
27+
service.imq.emit('message', request, id);
28+
29+
await new Promise((resolve, reject) => setTimeout(() => {
30+
try {
31+
expect(warnStub.called).to.equal(true);
32+
const hasBefore = warnStub.getCalls().some(c => c.args && c.args[0] === BEFORE_HOOK_ERROR);
33+
expect(hasBefore).to.equal(true);
34+
resolve(undefined);
35+
} catch (e) { reject(e); }
36+
}, 1));
37+
38+
await service.destroy();
39+
});
40+
41+
it('should use console (fallback) inside send() when afterCall throws and options.logger is undefined', async () => {
42+
const warnStub = sinon.stub(console, 'warn' as any).callsFake(() => {});
43+
const afterCall = async () => { throw new Error('after fails'); };
44+
// Explicitly override default logger to undefined to force fallback branch
45+
const service: any = new FallbackLoggerService({ afterCall, logger: undefined as any });
46+
47+
const request: IMQRPCRequest = { from: 'Client', method: 'ping', args: [] };
48+
const id = uuid();
49+
50+
await service.start();
51+
service.imq.emit('message', request, id);
52+
53+
await new Promise((resolve, reject) => setTimeout(() => {
54+
try {
55+
expect(warnStub.called).to.equal(true);
56+
const hasAfter = warnStub.getCalls().some(c => c.args && c.args[0] === AFTER_HOOK_ERROR);
57+
expect(hasAfter).to.equal(true);
58+
resolve(undefined);
59+
} catch (e) { reject(e); }
60+
}, 1));
61+
62+
await service.destroy();
63+
});
64+
});

0 commit comments

Comments
 (0)