X-Git-Url: http://git.squeep.com/?p=squeep-test-helper;a=blobdiff_plain;f=lib%2Fstub-logger.js;fp=lib%2Fstub-logger.js;h=6df2b94f97e4d932f53d9afca1f300d4b6acc0be;hp=0000000000000000000000000000000000000000;hb=f4818ada492c17c8941616e935579ed7555ec636;hpb=3c28b4072422f3922ede43b91013e7da6d1e067e diff --git a/lib/stub-logger.js b/lib/stub-logger.js new file mode 100644 index 0000000..6df2b94 --- /dev/null +++ b/lib/stub-logger.js @@ -0,0 +1,34 @@ +'use strict'; + +const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require + +const nop = () => { /* */ }; + +class StubLogger { + constructor(verbose = false) { + const logger = (process.env.VERBOSE_TESTS || verbose) ? console : StubLogger._nullLogger; + Object.keys(StubLogger._nullLogger).forEach((level) => { + this[level] = logger[level]; // eslint-disable-line security/detect-object-injection + }); + } + + static get _nullLogger() { + return { + error: nop, + warn: nop, + info: nop, + log: nop, + debug: nop, + }; + } + + static get _levels() { + return Object.keys(StubLogger._nullLogger); + } + + _reset() { + Object.keys(StubLogger._nullLogger).forEach((level) => sinon.spy(this, level)); + } +} + +module.exports = StubLogger;