X-Git-Url: https://git.r.bdr.sh/rbdr/cologne/blobdiff_plain/58906d77975b35fe93569f8083b90140124f9c41..ae85c067634676251e812765c81adfdef8f85f9d:/test/loggers/console.js diff --git a/test/loggers/console.js b/test/loggers/console.js new file mode 100644 index 0000000..3358837 --- /dev/null +++ b/test/loggers/console.js @@ -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');