]> git.r.bdr.sh - rbdr/cologne/blobdiff - test/loggers/console.js
Update the code.
[rbdr/cologne] / test / loggers / console.js
diff --git a/test/loggers/console.js b/test/loggers/console.js
new file mode 100644 (file)
index 0000000..3358837
--- /dev/null
@@ -0,0 +1,123 @@
+'use strict';
+
+const Tap = require('tap');
+
+const ConsoleLogger = require('../../lib/loggers/console');
+
+// Prepare the test
+
+const dummyFormatter = {
+  values: [],
+  format: function (log) {
+
+    this.values.push(log);
+    return 'lol';
+  }
+};
+
+const dummyConsole = {
+  values: {
+    log: 0,
+    warn: 0,
+    error: 0,
+    info: 0
+  },
+  _log: function (type, ...logs) {
+
+    this.values[type] += logs.length;
+  },
+  log: function (...logs) {
+
+    this._log('log', ...logs);
+  },
+  warn: function (...logs) {
+
+    this._log('warn', ...logs);
+  },
+  error: function (...logs) {
+
+    this._log('error', ...logs);
+  },
+  info: function (...logs) {
+
+    this._log('info', ...logs);
+  }
+};
+
+const logObjectA = {
+  _timestamp: Date.now() + .134,
+  _cologneLog: '1.0.0',
+  _from: 'Dummy Logger',
+  _level: 6,
+  _levelString: 'info',
+  message: 'MessageOne'
+};
+
+const logObjectB = {
+  _timestamp: Date.now() + .134,
+  _cologneLog: '1.0.0',
+  _from: 'Dummy Logger',
+  _level: 6,
+  _levelString: 'info',
+  message: 'MessageTwo'
+};
+
+const logs = [logObjectA, logObjectB];
+
+const regularLogger = new ConsoleLogger({});
+const overrideLogger = new ConsoleLogger({
+  console: dummyConsole
+});
+const formattedLogger = new ConsoleLogger({
+  console: dummyConsole,
+  formatter: dummyFormatter
+});
+
+/**
+ * TEST: #log() - regular
+ */
+
+Tap.equal(regularLogger.console, global.console,
+  'It should default to the global console');
+
+/**
+ * TEST: #log() - override
+ */
+
+logObjectA._level = 5;
+logObjectB._level = 6;
+overrideLogger.log(...logs); // should go to info
+
+logObjectA._level = 4;
+logObjectB._level = 4;
+overrideLogger.log(...logs); // should go to warn
+
+logObjectA._level = 1;
+logObjectB._level = 3;
+overrideLogger.log(...logs); // should go to error
+
+logObjectA._level = 0;
+logObjectB._level = 2;
+overrideLogger.log(...logs); // should go to error
+
+logObjectA._level = 7;
+logObjectB._level = 8;
+overrideLogger.log(...logs); // should go to log
+
+Tap.equal(dummyConsole.values.log, logs.length,
+  'It should send debug messages to console\'s #log');
+Tap.equal(dummyConsole.values.info, logs.length,
+  'It should send info and notice messages to console\'s #info');
+Tap.equal(dummyConsole.values.warn, logs.length,
+  'It should send warn messages to console\'s #warn');
+Tap.equal(dummyConsole.values.error, logs.length * 2,
+  'It should send error messages to console\'s #error');
+
+/**
+ * TEST: #log() - with formatter
+ */
+
+formattedLogger.log(...logs); // should go to log
+
+Tap.similar(dummyFormatter.values, logs,
+  'If available, it should send the objects to the formatter');