'use strict';
-let tap = require('tap');
+const Tap = require('tap');
-let Cologne = require('../lib/cologne');
+const { Cologne } = require('..');
-let dummyLogger = {
- values : null,
- log : function () {
- let logObject;
+// Utility Functions
- this.values = [];
+const createDummyLogger = function () {
- for (logObject of arguments) {
- this.values.push(logObject);
+ return {
+ values: null,
+ log(...logs) {
+
+ this.values = [];
+
+ for (const log of logs) {
+ this.values.push(log);
+ }
}
- }
+ };
+};
+
+const levelChecker = function (level) {
+
+ return (count, log) => (log._level === level ? count + 1 : count);
};
+
// Prepare the test
-let dummyLoggerA, dummyLoggerB, dummyLoggerC,
- co, params, builtLog, meta,
- valueCheck, levelCheck;
-tap.plan(18);
+Tap.plan(19);
-dummyLoggerA = Object.assign({}, dummyLogger);
-dummyLoggerB = Object.assign({}, dummyLogger);
-dummyLoggerC = Object.assign({}, dummyLogger);
+const dummyLoggerA = createDummyLogger();
+const dummyLoggerB = createDummyLogger();
+const dummyLoggerC = createDummyLogger();
-co = new Cologne({
- loggers : [
+const co = new Cologne({
+ loggers: [
dummyLoggerA,
dummyLoggerB
]
});
-meta = {
- rainbows: true
-};
-
-params = ['example1', null, undefined, 1, {example: true}];
+const exampleLogs = ['example1', null, undefined, 1, { example: true }];
/**
* TEST: #log()
*/
-co.log.apply(co, params);
+co.log(...exampleLogs);
// Calculate values
-valueCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (typeof current._cologneLog === 'string') {
- previous++;
- }
- return previous;
-}, 0);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 6) {
- previous++;
- }
- return previous;
-}, 0);
+const valueCheck = dummyLoggerA.values.reduce((count, log) => (typeof log._cologneLog === 'string' ? count + 1 : count), 0);
+let levelCheck = dummyLoggerA.values.reduce(levelChecker(6), 0);
// Now check the values
-tap.equal(dummyLoggerA.values.length, params.length,
- '#log() should send every argument to the loggers');
+Tap.equal(dummyLoggerA.values.length, exampleLogs.length,
+ '#log() should send every argument to the loggers');
-tap.similar(dummyLoggerA.values, dummyLoggerB.values,
- '#log() should send the same arguments to all the loggers');
+Tap.similar(dummyLoggerA.values, dummyLoggerB.values,
+ '#log() should send the same arguments to all the loggers');
-tap.equal(valueCheck, params.length,
- '#log() should send all objects in cologne log format');
+Tap.equal(valueCheck, exampleLogs.length,
+ '#log() should send all objects in cologne log format');
-tap.equal(levelCheck, params.length,
- '#log() should default to level 6');
+Tap.equal(levelCheck, exampleLogs.length,
+ '#log() should default to level 6');
/**
* TEST: #debug()
*/
-co.debug.apply(co, params);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 7) {
- previous++;
- }
- return previous;
-}, 0);
+co.debug(...exampleLogs);
+levelCheck = dummyLoggerA.values.reduce(levelChecker(7), 0);
-tap.equal(levelCheck, params.length,
- '#debug() should set to level 7');
+Tap.equal(levelCheck, exampleLogs.length,
+ '#debug() should set to level 7');
/**
* TEST: #info()
*/
-co.info.apply(co, params);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 6) {
- previous++;
- }
- return previous;
-}, 0);
+co.info(...exampleLogs);
+levelCheck = dummyLoggerA.values.reduce(levelChecker(6), 0);
-tap.equal(levelCheck, params.length,
- '#info() should set to level 6');
+Tap.equal(levelCheck, exampleLogs.length,
+ '#info() should set to level 6');
/**
* TEST: #notice()
*/
-co.notice.apply(co, params);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 5) {
- previous++;
- }
- return previous;
-}, 0);
+co.notice(...exampleLogs);
+levelCheck = dummyLoggerA.values.reduce(levelChecker(5), 0);
-tap.equal(levelCheck, params.length,
- '#notice() should set to level 5');
+Tap.equal(levelCheck, exampleLogs.length,
+ '#notice() should set to level 5');
/**
* TEST: #warn()
*/
-co.warn.apply(co, params);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 4) {
- previous++;
- }
- return previous;
-}, 0);
+co.warn(...exampleLogs);
+levelCheck = dummyLoggerA.values.reduce(levelChecker(4), 0);
-tap.equal(levelCheck, params.length,
- '#warn() should set to level 4');
+Tap.equal(levelCheck, exampleLogs.length,
+ '#warn() should set to level 4');
/**
* TEST: #error()
*/
-co.error.apply(co, params);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 3) {
- previous++;
- }
- return previous;
-}, 0);
+co.error(...exampleLogs);
+levelCheck = dummyLoggerA.values.reduce(levelChecker(3), 0);
-tap.equal(levelCheck, params.length,
- '#error() should set to level 3');
+Tap.equal(levelCheck, exampleLogs.length,
+ '#error() should set to level 3');
/**
* TEST: #buildLog()
*/
-builtLog = co.buildLog('example');
+let builtLog = co.buildLog('example');
// With the default level
-tap.equal(typeof builtLog._cologneLog, 'string',
- '#buildLog() should return a cologne log');
-tap.equal(builtLog._level, 6,
- '#buildLog() should default to level 6');
+Tap.equal(typeof builtLog._cologneLog, 'string',
+ '#buildLog() should return a cologne log');
+Tap.equal(builtLog._level, 6,
+ '#buildLog() should default to level 6');
// Now with a specific value
builtLog = co.buildLog('example', 1);
-tap.equal(builtLog._level, 1,
- '#buildLog() should use the specified level');
+Tap.equal(builtLog._level, 1,
+ '#buildLog() should use the specified level');
-// Now with meta
-builtLog = co.buildLog('example', 1, meta);
+// Extending object properties
+builtLog = co.buildLog({ message: 'example', rainbows: true }, 1);
-tap.equal(builtLog.rainbows, true,
- '#buildLog() should extend the object with meta if available');
+Tap.equal(builtLog.message, 'example',
+ '#buildLog() should use the message property as the message if available');
+Tap.equal(builtLog.rainbows, true,
+ '#buildLog() should extend the object with its properties');
/**
* TEST: #log() with builtLog.
*/
co.log(builtLog);
-levelCheck = dummyLoggerA.values.reduce(function (previous, current) {
- if (current._level === 1) {
- previous++;
- }
- return previous;
-}, 0);
+levelCheck = dummyLoggerA.values.reduce(levelChecker(1), 0);
-tap.equal(levelCheck, 1,
- '#log() calls using a pre-built cologne log should maintain the log level');
+Tap.equal(levelCheck, 1,
+ '#log() calls using a pre-built cologne log should maintain the log level');
/**
*/
co.removeLogger(dummyLoggerC);
-tap.equal(co.loggers.length, 2,
- '#removeLogger() should do nothing if it can\'t find a logger');
+Tap.equal(co.loggers.length, 2,
+ '#removeLogger() should do nothing if it can\'t find a logger');
-co.log.apply(co, params);
+co.log(...exampleLogs);
co.removeLogger(dummyLoggerB);
co.log(1);
-tap.equal(co.loggers.length, 1,
- '#removeLogger() should remove a logger');
+Tap.equal(co.loggers.length, 1,
+ '#removeLogger() should remove a logger');
-tap.notEqual(dummyLoggerB.values.length, dummyLoggerA.values.length,
- '#removeLogger() should no longer affect removed logs');
+Tap.notEqual(dummyLoggerB.values.length, dummyLoggerA.values.length,
+ '#removeLogger() should no longer affect removed logs');
/**
* TEST: #addLogger()
*/
co.addLogger(dummyLoggerC);
-co.log.apply(co, params);
+co.log(...exampleLogs);
-tap.equal(dummyLoggerC.values.length, params.length,
- '#addLogger() should add loggers after instance is live');
+Tap.equal(dummyLoggerC.values.length, exampleLogs.length,
+ '#addLogger() should add loggers after instance is live');