/* * logger-test.js: Tests for instances of the winston Logger * * (C) 2010 Charlie Robbins * MIT LICENSE * */ var fs = require('fs'), path = require('path'), vows = require('vows'), http = require('http'), assert = require('assert'), winston = require('../lib/winston'), helpers = require('./helpers'); vows.describe('winston').addBatch({ "The winston module": { topic: function () { winston.default.transports.console.level = 'silly'; return null; }, "should have the correct methods defined": function () { assert.isObject(winston.transports); assert.isFunction(winston.Transport); assert.isTrue(!winston.transports.Transport); assert.isFunction(winston.transports.Console); assert.isFunction(winston.transports.File); assert.isFunction(winston.transports.Loggly); assert.isFunction(winston.transports.Webhook); assert.isObject(winston.default.transports.console); assert.isFalse(winston.emitErrs); assert.isObject(winston.config); ['Logger', 'add', 'remove', 'extend'] .concat(Object.keys(winston.config.npm.levels)) .forEach(function (key) { assert.isFunction(winston[key]); }); }, "it should": { topic: function () { fs.readFile(path.join(__dirname, '..', 'package.json'), this.callback); }, "have the correct version set": function (err, data) { assert.isNull(err); data = JSON.parse(data.toString()); assert.equal(winston.version, data.version); } }, "the log() method": helpers.testNpmLevels(winston, "should respond without an error", function (err) { assert.isNull(err); }), "the extend() method called on an empty object": { topic: function (logger) { var empty = {}; winston.extend(empty); return empty; }, "should define the appropriate methods": function (extended) { ['log', 'profile', 'startTimer'].concat(Object.keys(winston.config.npm.levels)).forEach(function (method) { assert.isFunction(extended[method]); }); } } } }).addBatch({ "The winston module": { "the setLevels() method": { topic: function () { winston.setLevels(winston.config.syslog.levels); return null; }, "should have the proper methods defined": function () { assert.isObject(winston.transports); assert.isFunction(winston.transports.Console); assert.isFunction(winston.transports.Loggly); assert.isFunction(winston.transports.Webhook); assert.isObject(winston.default.transports.console); assert.isFalse(winston.emitErrs); assert.isObject(winston.config); var newLevels = Object.keys(winston.config.syslog.levels); ['Logger', 'add', 'remove', 'extend'] .concat(newLevels) .forEach(function (key) { assert.isFunction(winston[key]); }); Object.keys(winston.config.npm.levels) .filter(function (key) { return newLevels.indexOf(key) === -1; }) .forEach(function (key) { assert.isTrue(typeof winston[key] === 'undefined'); }); } } } }).export(module);