"use strict"; var vows = require('vows') , assert = require('assert') , levels = require('../lib/levels') , loggerModule = require('../lib/logger') , Logger = loggerModule.Logger; vows.describe('../lib/logger').addBatch({ 'constructor with no parameters': { topic: new Logger(), 'should use default category': function(logger) { assert.equal(logger.category, Logger.DEFAULT_CATEGORY); }, 'should use TRACE log level': function(logger) { assert.equal(logger.level, levels.TRACE); } }, 'constructor with category': { topic: new Logger('cheese'), 'should use category': function(logger) { assert.equal(logger.category, 'cheese'); }, 'should use TRACE log level': function(logger) { assert.equal(logger.level, levels.TRACE); } }, 'constructor with category and level': { topic: new Logger('cheese', 'debug'), 'should use category': function(logger) { assert.equal(logger.category, 'cheese'); }, 'should use level': function(logger) { assert.equal(logger.level, levels.DEBUG); } }, 'isLevelEnabled': { topic: new Logger('cheese', 'info'), 'should provide a level enabled function for all levels': function(logger) { assert.isFunction(logger.isTraceEnabled); assert.isFunction(logger.isDebugEnabled); assert.isFunction(logger.isInfoEnabled); assert.isFunction(logger.isWarnEnabled); assert.isFunction(logger.isErrorEnabled); assert.isFunction(logger.isFatalEnabled); }, 'should return the right values': function(logger) { assert.isFalse(logger.isTraceEnabled()); assert.isFalse(logger.isDebugEnabled()); assert.isTrue(logger.isInfoEnabled()); assert.isTrue(logger.isWarnEnabled()); assert.isTrue(logger.isErrorEnabled()); assert.isTrue(logger.isFatalEnabled()); } }, 'should emit log events': { topic: function() { var events = [], logger = new Logger(); logger.addListener('log', function (logEvent) { events.push(logEvent); }); logger.debug('Event 1'); loggerModule.disableAllLogWrites(); logger.debug('Event 2'); loggerModule.enableAllLogWrites(); logger.debug('Event 3'); return events; }, 'when log writes are enabled': function(events) { assert.equal(events[0].data[0], 'Event 1'); }, 'but not when log writes are disabled': function(events) { assert.equal(events.length, 2); assert.equal(events[1].data[0], 'Event 3'); } } }).exportTo(module);