fix _reset behavior
[squeep-test-helper] / lib / stub-logger.js
1 'use strict';
2
3 const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require
4
5 const nop = () => undefined;
6
7 class StubLogger {
8 constructor(verbose = false) {
9 const logger = (process.env.VERBOSE_TESTS || verbose) ? console : StubLogger._nullLogger;
10 Object.keys(StubLogger._nullLogger).forEach((level) => {
11 this[level] = logger[level]; // eslint-disable-line security/detect-object-injection
12 sinon.spy(this, level);
13 });
14 }
15
16 static get _nullLogger() {
17 return {
18 error: nop,
19 warn: nop,
20 info: nop,
21 log: nop,
22 debug: nop,
23 };
24 }
25
26 static get _levels() {
27 return Object.keys(StubLogger._nullLogger);
28 }
29
30 _reset() {
31 StubLogger._levels.forEach((level) => this[level].resetHistory()); // eslint-disable-line security/detect-object-injection
32 }
33 }
34
35 module.exports = StubLogger;