-
-
Notifications
You must be signed in to change notification settings - Fork 495
/
Logger.test.ts
111 lines (93 loc) · 4.5 KB
/
Logger.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import { Configuration, DefaultLogger, SimpleLogger, colors } from '@mikro-orm/core';
// Remove colors to allow for text matching in response
const redColorFormatterSpy = jest.spyOn(colors, 'red').mockImplementation(text => text);
const greyColorFormatterSpy = jest.spyOn(colors, 'grey').mockImplementation(text => text);
const cyanColorFormatterSpy = jest.spyOn(colors, 'cyan').mockImplementation(text => text);
const yellowColorFormatterSpy = jest.spyOn(colors, 'yellow').mockImplementation(text => text);
const mockWriter = jest.fn();
describe('Logger', () => {
beforeEach(() => {
jest.clearAllMocks();
});
describe('DefaultLogger', () => {
test('should have debug mode disabled by default', async () => {
const logger = new DefaultLogger({ writer: mockWriter });
expect(logger.debugMode).toBe(false);
logger.log('discovery', 'test debug msg');
logger.log('info', 'test info msg');
expect(mockWriter).toBeCalledTimes(0);
});
test('should print debug messages when debug mode enabled', async () => {
const logger = new DefaultLogger({ writer: mockWriter, debugMode: true });
expect(logger.debugMode).toBe(true);
logger.log('discovery', 'test debug msg');
expect(mockWriter).toBeCalledTimes(1);
logger.log('info', 'test info msg');
expect(mockWriter).toBeCalledTimes(2);
logger.log('query', 'test query msg');
expect(mockWriter).toBeCalledTimes(3);
});
test('should not print debug messages when given namespace not enabled', async () => {
const logger = new DefaultLogger({ writer: mockWriter, debugMode: ['query'] });
expect(logger.debugMode).toEqual(['query']);
logger.log('discovery', 'test debug msg');
expect(mockWriter).toBeCalledTimes(0);
logger.log('info', 'test info msg');
expect(mockWriter).toBeCalledTimes(0);
logger.log('query', 'test query msg');
expect(mockWriter).toBeCalledTimes(1);
logger.error('query', 'test error msg');
expect(mockWriter).toBeCalledTimes(2);
logger.warn('query', 'test warning msg');
expect(mockWriter).toBeCalledTimes(3);
});
test('should print labels correctly', () => {
const logger = new DefaultLogger({ writer: mockWriter, debugMode: ['query'] });
const namespace = 'query';
const message = 'test label msg';
const label = 'hello world handler';
logger.log(namespace, message, { label });
expect(mockWriter).toBeCalledWith(`[${namespace}] (${label}) ${message}`);
});
test('should print values with the appropriate colors', () => {
const logger = new DefaultLogger({ writer: mockWriter, debugMode: ['query'] });
const namespace = 'query';
const label = 'handler';
const message = 'test label msg';
logger.log(namespace, message, { level: 'error', label });
expect(greyColorFormatterSpy).toBeCalledWith(`[${namespace}] `);
expect(redColorFormatterSpy).toBeCalledWith(message);
expect(cyanColorFormatterSpy).toBeCalledWith(`(${label}) `);
expect(yellowColorFormatterSpy).not.toBeCalled();
jest.clearAllMocks();
logger.log(namespace, message, { level: 'warning', label });
expect(greyColorFormatterSpy).toBeCalledWith(`[${namespace}] `);
expect(yellowColorFormatterSpy).toBeCalledWith(message);
expect(cyanColorFormatterSpy).toBeCalledWith(`(${label}) `);
expect(redColorFormatterSpy).not.toBeCalled();
jest.clearAllMocks();
logger.log(namespace, message, { level: 'info', label });
expect(greyColorFormatterSpy).toBeCalledWith(`[${namespace}] `);
expect(cyanColorFormatterSpy).toBeCalledWith(`(${label}) `);
expect(yellowColorFormatterSpy).not.toBeCalled();
expect(redColorFormatterSpy).not.toBeCalled();
});
});
describe('SimpleLogger', () => {
test('should print correctly without a label', () => {
const logger = new SimpleLogger({ writer: mockWriter, debugMode: ['query'] });
const namespace = 'query';
const message = 'test label msg';
logger.log(namespace, message);
expect(mockWriter).toBeCalledWith(`[${namespace}] ${message}`);
});
test('should print labels correctly', () => {
const logger = new SimpleLogger({ writer: mockWriter, debugMode: ['query'] });
const namespace = 'query';
const message = 'test label msg';
const label = 'hello world handler';
logger.log(namespace, message, { label });
expect(mockWriter).toBeCalledWith(`[${namespace}] (${label}) ${message}`);
});
});
});