Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 9102895

Browse files
authored
Merge pull request #2 from AckeeCZ/change/async-tests
Fix tests (env)
2 parents d9d451d + 245693f commit 9102895

2 files changed

Lines changed: 75 additions & 142 deletions

File tree

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"scripts": {
77
"build": "tsc --strict --noImplicitReturns --noUnusedLocals --noUnusedParameters",
88
"lint-staged": "lint-staged",
9-
"test": "jest",
10-
"test-watch": "jest --watch",
9+
"test": "NODE_ENV= jest",
10+
"test-watch": "NODE_ENV= jest --watch",
1111
"lint": "tslint -p . --force --format codeFrame; exit 0",
1212
"pretty": "prettier --parser typescript --write 'src/*.ts'",
1313
"precommit": "lint-staged && npm test",

src/tests/index.test.ts

Lines changed: 73 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -20,71 +20,54 @@ test('can create named logger', () => {
2020
expect(logger).toBeDefined();
2121
});
2222

23-
test('can use custom stream', () => {
24-
const loggerWrites = jest.fn();
25-
const logger = loggerFactory({
26-
streams: [
27-
{
28-
stream: new Writable({
29-
write: (chunk, encoding, next) => {
30-
const json = JSON.parse(chunk);
31-
expect(json.message).toBe('Hello');
32-
loggerWrites();
33-
next();
34-
},
35-
}),
36-
},
37-
],
38-
});
39-
40-
logger.info('Hello');
41-
expect(loggerWrites).toBeCalled();
23+
const testWriteStream = (resolve, assert) => ({
24+
stream: new Writable({
25+
write: (chunk, encoding, next) => {
26+
const json = JSON.parse(chunk);
27+
assert(json);
28+
next();
29+
resolve();
30+
},
31+
}),
4232
});
4333

44-
test('can use warning level', () => {
45-
const loggerWrites = jest.fn();
46-
const logger = loggerFactory({
47-
streams: [
48-
{
49-
stream: new Writable({
50-
write: (chunk, encoding, next) => {
51-
const json = JSON.parse(chunk);
52-
expect(json.message).toBe('Hello');
53-
expect(json.level).toBe(levels.warn);
54-
loggerWrites();
55-
next();
56-
},
34+
test('can use custom stream', () =>
35+
new Promise((resolve, reject) => {
36+
const logger = loggerFactory({
37+
streams: [testWriteStream(resolve, json => expect(json.message).toBe('Hello'))],
38+
});
39+
40+
logger.info('Hello');
41+
}));
42+
43+
test('can use warning level', () =>
44+
new Promise((resolve, reject) => {
45+
const logger = loggerFactory({
46+
streams: [
47+
testWriteStream(resolve, json => {
48+
expect(json.message).toBe('Hello');
49+
expect(json.level).toBe(levels.warn);
5750
}),
58-
},
59-
],
60-
});
51+
],
52+
});
6153

62-
logger.warning('Hello');
63-
expect(loggerWrites).toBeCalled();
64-
});
54+
logger.warning('Hello');
55+
}));
6556

66-
test('child logger has warning level', () => {
67-
const loggerWrites = jest.fn();
68-
loggerFactory({
69-
streams: [
70-
{
71-
stream: new Writable({
72-
write: (chunk, encoding, next) => {
73-
const json = JSON.parse(chunk);
74-
expect(json.message).toBe('Hello');
75-
expect(json.level).toBe(levels.warn);
76-
loggerWrites();
77-
next();
78-
},
57+
test('child logger has warning level', () =>
58+
new Promise((resolve, reject) => {
59+
loggerFactory({
60+
streams: [
61+
testWriteStream(resolve, json => {
62+
expect(json.message).toBe('Hello');
63+
expect(json.level).toBe(levels.warn);
7964
}),
80-
},
81-
],
82-
});
83-
const childLogger = loggerFactory('child');
65+
],
66+
});
67+
const childLogger = loggerFactory('child');
8468

85-
childLogger.warning('Hello');
86-
expect(loggerWrites).toBeCalled();
87-
});
69+
childLogger.warning('Hello');
70+
}));
8871

8972
test('express binds', () => {
9073
const logger = loggerFactory();
@@ -94,29 +77,16 @@ test('express binds', () => {
9477
return request.get('/');
9578
});
9679

97-
test('GET requests are logged by default', () => {
98-
const loggerWrites = jest.fn();
99-
const logger = loggerFactory({
100-
streams: [
101-
{
102-
stream: new Writable({
103-
write: (chunk, encoding, next) => {
104-
const json = JSON.parse(chunk);
105-
expect(json.req.method).toBe('GET');
106-
loggerWrites();
107-
next();
108-
},
109-
}),
110-
},
111-
],
112-
});
113-
const app = express();
114-
const request = supertest(app);
115-
app.use(logger.express);
116-
return request.get('/').then(() => {
117-
expect(loggerWrites).toBeCalled();
118-
});
119-
});
80+
test('GET requests are logged by default', () =>
81+
new Promise((resolve, reject) => {
82+
const logger = loggerFactory({
83+
streams: [testWriteStream(resolve, json => expect(json.req.method).toBe('GET'))],
84+
});
85+
const app = express();
86+
const request = supertest(app);
87+
app.use(logger.express);
88+
request.get('/').then(() => null);
89+
}));
12090

12191
test('OPTIONS requests are ignored by default', () => {
12292
const loggerWrites = jest.fn();
@@ -165,69 +135,33 @@ test('OPTIONS requests are ignored by default', () => {
165135
});
166136
});
167137

168-
test('severity field is automatically added to log object', () => {
169-
const loggerWrites = jest.fn();
170-
const logger = loggerFactory({
171-
streams: [
172-
{
173-
stream: new Writable({
174-
write: (chunk, encoding, next) => {
175-
const json = JSON.parse(chunk);
176-
expect(json.severity).toBe('CRITICAL');
177-
loggerWrites();
178-
next();
179-
},
180-
}),
181-
},
182-
],
183-
});
138+
test('severity field is automatically added to log object', () =>
139+
new Promise((resolve, reject) => {
140+
const logger = loggerFactory({
141+
streams: [testWriteStream(resolve, json => expect(json.severity).toBe('CRITICAL'))],
142+
});
184143

185-
logger.fatal('Hello');
186-
expect(loggerWrites).toBeCalled();
187-
});
144+
logger.fatal('Hello');
145+
}));
188146

189-
test('automatic severity field can be disabled by options', () => {
190-
const loggerWrites = jest.fn();
191-
const logger = loggerFactory({
192-
disableStackdriverFormat: true,
193-
streams: [
194-
{
195-
stream: new Writable({
196-
write: (chunk, encoding, next) => {
197-
const json = JSON.parse(chunk);
198-
expect(json.severity).toBe(undefined);
199-
loggerWrites();
200-
next();
201-
},
202-
}),
203-
},
204-
],
205-
});
147+
test('automatic severity field can be disabled by options', () =>
148+
new Promise((resolve, reject) => {
149+
const logger = loggerFactory({
150+
disableStackdriverFormat: true,
151+
streams: [testWriteStream(resolve, json => expect(json.severity).toBe(undefined))],
152+
});
206153

207-
logger.fatal('Hello');
208-
expect(loggerWrites).toBeCalled();
209-
});
154+
logger.fatal('Hello');
155+
}));
210156

211-
test('logger version is logged', () => {
212-
const loggerWrites = jest.fn();
213-
const logger = loggerFactory({
214-
streams: [
215-
{
216-
stream: new Writable({
217-
write: (chunk, encoding, next) => {
218-
const json = JSON.parse(chunk);
219-
expect(json.pkgVersion).not.toBe(undefined);
220-
loggerWrites();
221-
next();
222-
},
223-
}),
224-
},
225-
],
226-
});
157+
test('logger version is logged', () =>
158+
new Promise((resolve, reject) => {
159+
const logger = loggerFactory({
160+
streams: [testWriteStream(resolve, json => expect(json.pkgVersion).not.toBe(undefined))],
161+
});
227162

228-
logger.fatal('Hello');
229-
expect(loggerWrites).toBeCalled();
230-
});
163+
logger.fatal('Hello');
164+
}));
231165

232166
test('silent stream does not write', () => {
233167
const loggerWrites = jest.fn();
@@ -236,7 +170,6 @@ test('silent stream does not write', () => {
236170
{
237171
stream: new Writable({
238172
write: (chunk, encoding, next) => {
239-
const json = JSON.parse(chunk);
240173
loggerWrites();
241174
next();
242175
},

0 commit comments

Comments
 (0)