initial commit
[squeep-test-helper] / lib / stub-logger.js
diff --git a/lib/stub-logger.js b/lib/stub-logger.js
new file mode 100644 (file)
index 0000000..6df2b94
--- /dev/null
@@ -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;