Skip to content

Commit ed46b0f

Browse files
committed
test(logger-factory): add tests for getScopedLogger functionality
1 parent 655fd02 commit ed46b0f

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { afterEach, describe, expect, it, vi } from 'vitest';
2+
import { LogLevel } from '../../../common/logger/types.js';
3+
import { getScopedLogger } from '../logger.factory.js';
4+
5+
const { mockLogger } = await vi.hoisted(async () => {
6+
const loggerMockModule = await import(
7+
'../../../common/logger/__mocks__/logger.mock.js'
8+
);
9+
10+
const mockLogger = new loggerMockModule.LoggerMockImpl();
11+
12+
return {
13+
mockLogger,
14+
};
15+
});
16+
17+
vi.mock('../logger.js', () => {
18+
class MyLogger {
19+
constructor() {
20+
return mockLogger;
21+
}
22+
}
23+
24+
return {
25+
LoggerImpl: MyLogger,
26+
};
27+
});
28+
29+
vi.mock('electron', async () => {
30+
return {
31+
app: {
32+
getName: vi.fn().mockReturnValue('test-name'),
33+
getPath: vi.fn().mockReturnValue('test-path'),
34+
},
35+
};
36+
});
37+
38+
describe('logger-factory', () => {
39+
afterEach(() => {
40+
vi.clearAllMocks();
41+
vi.clearAllTimers();
42+
});
43+
44+
describe('#getScopedLogger', () => {
45+
it('enriches message with scope to default logger delegate', async () => {
46+
const logger = getScopedLogger('test-scope');
47+
48+
logger.info('test', { message: 'test' });
49+
50+
expect(mockLogger.log).toHaveBeenCalledWith({
51+
level: LogLevel.INFO,
52+
message: 'test',
53+
data: {
54+
message: 'test',
55+
scope: 'test-scope',
56+
},
57+
});
58+
});
59+
60+
it('caches logger with same scopes', async () => {
61+
const logger1a = getScopedLogger('test-scope-1');
62+
const logger1b = getScopedLogger('test-scope-1');
63+
const logger2a = getScopedLogger('test-scope-2');
64+
65+
expect(logger1a).toBe(logger1b);
66+
expect(logger1a).not.toBe(logger2a);
67+
});
68+
});
69+
});

0 commit comments

Comments
 (0)