--- /dev/null
+'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');