-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.test.cjs
More file actions
123 lines (111 loc) · 3.62 KB
/
index.test.cjs
File metadata and controls
123 lines (111 loc) · 3.62 KB
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
112
113
114
115
116
117
118
119
120
121
122
123
// Minimal CommonJS test stub
const { registerHandlers, default: defaultExport } = require('./index.cjs');
const { test, expect, describe, beforeEach } = require('@jest/globals');
describe('registerHandlers (CJS)', () => {
let events;
let mockLogger;
let mockProcess;
let removeHandlers;
beforeEach(() => {
events = {};
mockLogger = {
error: jest.fn(),
warn: jest.fn(),
debug: jest.fn()
};
mockProcess = {
on: (event, handler) => { events[event] = handler; },
off: jest.fn()
};
({ removeHandlers } = registerHandlers({ processObj: mockProcess, log: mockLogger }));
});
test('should call logger.error on uncaughtException', () => {
events.uncaughtException(new Error('fail'));
expect(mockLogger.error).toHaveBeenCalledWith('Uncaught Exception', expect.objectContaining({
name: 'Error',
message: 'fail',
stack: expect.any(String),
error: expect.any(Error)
}));
});
test('should call logger.error on unhandledRejection', () => {
const err = new Error('reason');
events.unhandledRejection(err, 'promise');
expect(mockLogger.error).toHaveBeenCalledWith('Unhandled Rejection', expect.objectContaining({
reason: expect.objectContaining({
name: 'Error',
message: 'reason',
stack: expect.any(String),
error: expect.any(Error)
}),
promise: 'promise'
}));
});
test('should call logger.warn on warning', () => {
const warning = { name: 'Warn', message: 'msg', stack: 'stack' };
events.warning(warning);
expect(mockLogger.warn).toHaveBeenCalledWith('Warning', expect.objectContaining({
name: 'Warn',
message: 'msg',
stack: 'stack',
warning
}));
});
test('should provide a removeHandlers function', () => {
expect(typeof removeHandlers).toBe('function');
});
});
describe('default export (CJS)', () => {
let events;
let mockLogger;
let mockProcess;
let removeHandlers;
beforeEach(() => {
events = {};
mockLogger = {
error: jest.fn(),
warn: jest.fn(),
debug: jest.fn()
};
mockProcess = {
on: (event, handler) => { events[event] = handler; },
off: jest.fn()
};
({ removeHandlers } = defaultExport({ processObj: mockProcess, log: mockLogger }));
});
test('should call logger.error on uncaughtException', () => {
events.uncaughtException(new Error('fail'));
expect(mockLogger.error).toHaveBeenCalledWith('Uncaught Exception', expect.objectContaining({
name: 'Error',
message: 'fail',
stack: expect.any(String),
error: expect.any(Error)
}));
});
test('should call logger.error on unhandledRejection', () => {
const err = new Error('reason');
events.unhandledRejection(err, 'promise');
expect(mockLogger.error).toHaveBeenCalledWith('Unhandled Rejection', expect.objectContaining({
reason: expect.objectContaining({
name: 'Error',
message: 'reason',
stack: expect.any(String),
error: expect.any(Error)
}),
promise: 'promise'
}));
});
test('should call logger.warn on warning', () => {
const warning = { name: 'Warn', message: 'msg', stack: 'stack' };
events.warning(warning);
expect(mockLogger.warn).toHaveBeenCalledWith('Warning', expect.objectContaining({
name: 'Warn',
message: 'msg',
stack: 'stack',
warning
}));
});
test('should provide a removeHandlers function', () => {
expect(typeof removeHandlers).toBe('function');
});
});