diff --git a/test/tap/newLevel-test.js b/test/tap/newLevel-test.js new file mode 100644 index 0000000..b817cfa --- /dev/null +++ b/test/tap/newLevel-test.js @@ -0,0 +1,125 @@ +'use strict'; + +const test = require('tap').test; +const Level = require('../../lib/levels'); +const log4js = require('../../lib/log4js'); +const loggerModule = require('../../lib/logger'); + +const Logger = loggerModule.Logger; + +test('../../lib/logger', (batch) => { + batch.test('creating a new log level', (t) => { + Level.forName('DIAG', 6000); + const logger = new Logger(); + + t.test('should export new log level in levels module', (assert) => { + assert.ok(Level.DIAG); + assert.equal(Level.DIAG.levelStr, 'DIAG'); + assert.equal(Level.DIAG.level, 6000); + assert.end(); + }); + + t.type(logger.diag, 'function', 'should create named function on logger prototype'); + t.type(logger.isDiagEnabled, 'function', 'should create isLevelEnabled function on logger prototype'); + t.end(); + }); + + batch.test('creating a new log level with underscores', (t) => { + Level.forName('NEW_LEVEL_OTHER', 6000); + const logger = new Logger(); + + t.test('should export new log level to levels module', (assert) => { + assert.ok(Level.NEW_LEVEL_OTHER); + assert.equal(Level.NEW_LEVEL_OTHER.levelStr, 'NEW_LEVEL_OTHER'); + assert.equal(Level.NEW_LEVEL_OTHER.level, 6000); + assert.end(); + }); + + t.type( + logger.newLevelOther, 'function', + 'should create named function on logger prototype in camel case' + ); + t.type( + logger.isNewLevelOtherEnabled, 'function', + 'should create named isLevelEnabled function on logger prototype in camel case' + ); + t.end(); + }); + + batch.test('creating log events containing newly created log level', (t) => { + const events = []; + const logger = new Logger(); + logger.addListener('log', (logEvent) => { + events.push(logEvent); + }); + + logger.log(Level.forName('LVL1', 6000), 'Event 1'); + logger.log(Level.getLevel('LVL1'), 'Event 2'); + logger.log('LVL1', 'Event 3'); + logger.lvl1('Event 4'); + + logger.setLevel(Level.forName('LVL2', 7000)); + logger.lvl1('Event 5'); + + t.test('should show log events with new log level', (assert) => { + assert.equal(events[0].level.toString(), 'LVL1'); + assert.equal(events[0].data[0], 'Event 1'); + + assert.equal(events[1].level.toString(), 'LVL1'); + assert.equal(events[1].data[0], 'Event 2'); + + assert.equal(events[2].level.toString(), 'LVL1'); + assert.equal(events[2].data[0], 'Event 3'); + + assert.equal(events[3].level.toString(), 'LVL1'); + assert.equal(events[3].data[0], 'Event 4'); + assert.end(); + }); + + t.equal(events.length, 4, 'should not be present if min log level is greater than newly created level'); + t.end(); + }); + + batch.test('creating a new log level with incorrect parameters', (t) => { + log4js.levels.forName(9000, 'FAIL_LEVEL_1'); + log4js.levels.forName('FAIL_LEVEL_2'); + + t.test('should fail to create the level', (assert) => { + assert.notOk(Level.FAIL_LEVEL_1); + assert.notOk(Level.FAIL_LEVEL_2); + assert.end(); + }); + t.end(); + }); + + batch.test('calling log with an undefined log level', (t) => { + const events = []; + const logger = new Logger(); + logger.addListener('log', (logEvent) => { + events.push(logEvent); + }); + + logger.log('LEVEL_DOES_NEXT_EXIST', 'Event 1'); + logger.log(Level.forName('LEVEL_DOES_NEXT_EXIST'), 'Event 2'); + + t.equal(events[0].level.toString(), 'INFO', 'should fall back to INFO'); + t.equal(events[1].level.toString(), 'INFO', 'should fall back to INFO'); + t.end(); + }); + + batch.test('creating a new level with an existing level name', (t) => { + const events = []; + const logger = new Logger(); + logger.addListener('log', (logEvent) => { + events.push(logEvent); + }); + + logger.log(log4js.levels.forName('MY_LEVEL', 9000), 'Event 1'); + logger.log(log4js.levels.forName('MY_LEVEL', 8000), 'Event 1'); + + t.equal(events[0].level.level, 9000, 'should override the existing log level'); + t.equal(events[1].level.level, 8000, 'should override the existing log level'); + t.end(); + }); + batch.end(); +}); diff --git a/test/tap/subcategories-test.js b/test/tap/subcategories-test.js new file mode 100644 index 0000000..f803c69 --- /dev/null +++ b/test/tap/subcategories-test.js @@ -0,0 +1,83 @@ +'use strict'; + +const test = require('tap').test; +const log4js = require('../../lib/log4js'); +const levels = require('../../lib/levels'); + +test('subcategories', (batch) => { + batch.test('loggers created after levels configuration is loaded', (t) => { + log4js.configure({ + levels: { + sub1: 'WARN', + 'sub1.sub11': 'TRACE', + 'sub1.sub11.sub111': 'WARN', + 'sub1.sub12': 'INFO' + } + }); + + const loggers = { + sub1: log4js.getLogger('sub1'), // WARN + sub11: log4js.getLogger('sub1.sub11'), // TRACE + sub111: log4js.getLogger('sub1.sub11.sub111'), // WARN + sub12: log4js.getLogger('sub1.sub12'), // INFO + + sub13: log4js.getLogger('sub1.sub13'), // Inherits sub1: WARN + sub112: log4js.getLogger('sub1.sub11.sub112'), // Inherits sub1.sub11: TRACE + sub121: log4js.getLogger('sub1.sub12.sub121'), // Inherits sub12: INFO + sub0: log4js.getLogger('sub0') // Not defined, not inherited: TRACE + }; + + t.test('check logger levels', (assert) => { + assert.equal(loggers.sub1.level, levels.WARN); + assert.equal(loggers.sub11.level, levels.TRACE); + assert.equal(loggers.sub111.level, levels.WARN); + assert.equal(loggers.sub12.level, levels.INFO); + + assert.equal(loggers.sub13.level, levels.WARN); + assert.equal(loggers.sub112.level, levels.TRACE); + assert.equal(loggers.sub121.level, levels.INFO); + assert.equal(loggers.sub0.level, levels.TRACE); + assert.end(); + }); + + t.end(); + }); + + batch.test('loggers created before levels configuration is loaded', (t) => { + const loggers = { + sub1: log4js.getLogger('sub1'), // WARN + sub11: log4js.getLogger('sub1.sub11'), // TRACE + sub111: log4js.getLogger('sub1.sub11.sub111'), // WARN + sub12: log4js.getLogger('sub1.sub12'), // INFO + + sub13: log4js.getLogger('sub1.sub13'), // Inherits sub1: WARN + sub112: log4js.getLogger('sub1.sub11.sub112'), // Inherits sub1.sub11: TRACE + sub121: log4js.getLogger('sub1.sub12.sub121'), // Inherits sub12: INFO + sub0: log4js.getLogger('sub0') // Not defined, not inherited: TRACE + }; + + log4js.configure({ + levels: { + sub1: 'WARN', + 'sub1.sub11': 'TRACE', + 'sub1.sub11.sub111': 'WARN', + 'sub1.sub12': 'INFO' + } + }); + + t.test('check logger levels', (assert) => { + assert.equal(loggers.sub1.level, levels.WARN); + assert.equal(loggers.sub11.level, levels.TRACE); + assert.equal(loggers.sub111.level, levels.WARN); + assert.equal(loggers.sub12.level, levels.INFO); + + assert.equal(loggers.sub13.level, levels.WARN); + assert.equal(loggers.sub112.level, levels.TRACE); + assert.equal(loggers.sub121.level, levels.INFO); + assert.equal(loggers.sub0.level, levels.TRACE); + assert.end(); + }); + t.end(); + }); + batch.end(); +}); diff --git a/test/vows/newLevel-test.js b/test/vows/newLevel-test.js deleted file mode 100644 index 29202ca..0000000 --- a/test/vows/newLevel-test.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -const vows = require('vows'); -const assert = require('assert'); -const Level = require('../../lib/levels'); -const log4js = require('../../lib/log4js'); -const loggerModule = require('../../lib/logger'); - -const Logger = loggerModule.Logger; - -vows.describe('../../lib/logger').addBatch({ - 'creating a new log level': { - topic: function () { - Level.forName('DIAG', 6000); - return new Logger(); - }, - - 'should export new log level in levels module': function () { - assert.isDefined(Level.DIAG); - assert.equal(Level.DIAG.levelStr, 'DIAG'); - assert.equal(Level.DIAG.level, 6000); - }, - - 'should create named function on logger prototype': function (logger) { - assert.isFunction(logger.diag); - }, - - 'should create isLevelEnabled function on logger prototype': function (logger) { - assert.isFunction(logger.isDiagEnabled); - }, - }, - - 'creating a new log level with underscores': { - topic: function () { - Level.forName('NEW_LEVEL_OTHER', 6000); - return new Logger(); - }, - - 'should export new log level to levels module': function () { - assert.isDefined(Level.NEW_LEVEL_OTHER); - assert.equal(Level.NEW_LEVEL_OTHER.levelStr, 'NEW_LEVEL_OTHER'); - assert.equal(Level.NEW_LEVEL_OTHER.level, 6000); - }, - - 'should create named function on logger prototype in camel case': function (logger) { - assert.isFunction(logger.newLevelOther); - }, - - 'should create named isLevelEnabled function on logger prototype in camel case': function (logger) { - assert.isFunction(logger.isNewLevelOtherEnabled); - } - }, - - 'creating log events containing newly created log level': { - topic: function () { - const events = []; - const logger = new Logger(); - logger.addListener('log', (logEvent) => { - events.push(logEvent); - }); - - logger.log(Level.forName('LVL1', 6000), 'Event 1'); - logger.log(Level.getLevel('LVL1'), 'Event 2'); - logger.log('LVL1', 'Event 3'); - logger.lvl1('Event 4'); - - logger.setLevel(Level.forName('LVL2', 7000)); - logger.lvl1('Event 5'); - - return events; - }, - - 'should show log events with new log level': function (events) { - assert.equal(events[0].level.toString(), 'LVL1'); - assert.equal(events[0].data[0], 'Event 1'); - - assert.equal(events[1].level.toString(), 'LVL1'); - assert.equal(events[1].data[0], 'Event 2'); - - assert.equal(events[2].level.toString(), 'LVL1'); - assert.equal(events[2].data[0], 'Event 3'); - - assert.equal(events[3].level.toString(), 'LVL1'); - assert.equal(events[3].data[0], 'Event 4'); - }, - - 'should not be present if min log level is greater than newly created level': function (events) { - assert.equal(events.length, 4); - } - }, - - 'creating a new log level with incorrect parameters': { - topic: function () { - log4js.levels.forName(9000, 'FAIL_LEVEL_1'); - log4js.levels.forName('FAIL_LEVEL_2'); - return new Logger(); - }, - - 'should fail to create the level': function () { - assert.isUndefined(Level.FAIL_LEVEL_1); - assert.isUndefined(Level.FAIL_LEVEL_2); - } - }, - - 'calling log with an undefined log level': { - topic: function () { - const events = []; - const logger = new Logger(); - logger.addListener('log', (logEvent) => { - events.push(logEvent); - }); - - logger.log('LEVEL_DOES_NEXT_EXIST', 'Event 1'); - logger.log(Level.forName('LEVEL_DOES_NEXT_EXIST'), 'Event 2'); - - return events; - }, - - 'should fallback to the default log level (INFO)': function (events) { - assert.equal(events[0].level.toString(), 'INFO'); - assert.equal(events[1].level.toString(), 'INFO'); - } - }, - - 'creating a new level with an existing level name': { - topic: function () { - const events = []; - const logger = new Logger(); - logger.addListener('log', (logEvent) => { - events.push(logEvent); - }); - - logger.log(log4js.levels.forName('MY_LEVEL', 9000), 'Event 1'); - logger.log(log4js.levels.forName('MY_LEVEL', 8000), 'Event 1'); - - return events; - }, - - 'should override the existing log level': function (events) { - assert.equal(events[0].level.level, 9000); - assert.equal(events[1].level.level, 8000); - } - } -}).exportTo(module); diff --git a/test/vows/subcategories-test.js b/test/vows/subcategories-test.js deleted file mode 100644 index a90067e..0000000 --- a/test/vows/subcategories-test.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -const assert = require('assert'); -const vows = require('vows'); -const log4js = require('../../lib/log4js'); -const levels = require('../../lib/levels'); - -vows.describe('subcategories').addBatch({ - 'loggers created after levels configuration is loaded': { - topic: function () { - log4js.configure({ - levels: { - sub1: 'WARN', - 'sub1.sub11': 'TRACE', - 'sub1.sub11.sub111': 'WARN', - 'sub1.sub12': 'INFO' - } - }, { reloadSecs: 30 }); - - return { - sub1: log4js.getLogger('sub1'), // WARN - sub11: log4js.getLogger('sub1.sub11'), // TRACE - sub111: log4js.getLogger('sub1.sub11.sub111'), // WARN - sub12: log4js.getLogger('sub1.sub12'), // INFO - - sub13: log4js.getLogger('sub1.sub13'), // Inherits sub1: WARN - sub112: log4js.getLogger('sub1.sub11.sub112'), // Inherits sub1.sub11: TRACE - sub121: log4js.getLogger('sub1.sub12.sub121'), // Inherits sub12: INFO - sub0: log4js.getLogger('sub0') // Not defined, not inherited: TRACE - }; - }, - 'check logger levels': function (loggers) { - assert.equal(loggers.sub1.level, levels.WARN); - assert.equal(loggers.sub11.level, levels.TRACE); - assert.equal(loggers.sub111.level, levels.WARN); - assert.equal(loggers.sub12.level, levels.INFO); - - assert.equal(loggers.sub13.level, levels.WARN); - assert.equal(loggers.sub112.level, levels.TRACE); - assert.equal(loggers.sub121.level, levels.INFO); - assert.equal(loggers.sub0.level, levels.TRACE); - } - }, - 'loggers created before levels configuration is loaded': { - topic: function () { - const loggers = { - sub1: log4js.getLogger('sub1'), // WARN - sub11: log4js.getLogger('sub1.sub11'), // TRACE - sub111: log4js.getLogger('sub1.sub11.sub111'), // WARN - sub12: log4js.getLogger('sub1.sub12'), // INFO - - sub13: log4js.getLogger('sub1.sub13'), // Inherits sub1: WARN - sub112: log4js.getLogger('sub1.sub11.sub112'), // Inherits sub1.sub11: TRACE - sub121: log4js.getLogger('sub1.sub12.sub121'), // Inherits sub12: INFO - sub0: log4js.getLogger('sub0') // Not defined, not inherited: TRACE - }; - - - log4js.configure({ - levels: { - sub1: 'WARN', - 'sub1.sub11': 'TRACE', - 'sub1.sub11.sub111': 'WARN', - 'sub1.sub12': 'INFO' - } - }, { reloadSecs: 30 }); - - return loggers; - }, - 'check logger levels': function (loggers) { - assert.equal(loggers.sub1.level, levels.WARN); - assert.equal(loggers.sub11.level, levels.TRACE); - assert.equal(loggers.sub111.level, levels.WARN); - assert.equal(loggers.sub12.level, levels.INFO); - - assert.equal(loggers.sub13.level, levels.WARN); - assert.equal(loggers.sub112.level, levels.TRACE); - assert.equal(loggers.sub121.level, levels.INFO); - assert.equal(loggers.sub0.level, levels.TRACE); - } - } -}).exportTo(module);