/* * container-test.js: Tests for the Container object * * (C) 2011 Charlie Robbins * MIT LICENSE * */ var assert = require('assert'), fs = require('fs'), http = require('http'), path = require('path'), vows = require('vows'), winston = require('../lib/winston'), helpers = require('./helpers'); vows.describe('winston/container').addBatch({ "An instance of winston.Container": { topic: new winston.Container(), "the add() method": { topic: function (container) { return container.add('default-test'); }, "should correctly instantiate a Logger": function (logger) { assert.instanceOf(logger, winston.Logger); }, "the get() method": { topic: function (logger, container) { this.callback.apply(this, arguments); }, "should respond with the logger previously created": function (existing, container) { var logger = container.get('default-test'); assert.isTrue(existing === logger); } }, "the has() method": { topic: function (logger, container) { this.callback.apply(this, arguments); }, "should indicate `default-test` logger exists": function (existing, container) { assert.isTrue(container.has('default-test')); }, "should indicate `not-has` logger doesnt exists": function (existing, container) { assert.isFalse(container.has('not-has')); } }, "the close() method": { topic: function (logger, container) { this.callback.apply(this, arguments); }, "should remove the specified logger": function (logger, container) { container.close('default-test'); assert.isTrue(!container.loggers['default-test']); } } } }, "An instance of winston.Container with explicit transports": { topic: function () { this.port = 9412; this.transports = [ new winston.transports.Webhook({ port: this.port }) ]; this.container = new winston.Container({ transports: this.transports }); return null; }, "the get() method": { topic: function (container) { var server = http.createServer(function (req, res) { res.end(); }); server.listen(this.port, this.callback.bind(this, null)); }, "should add the logger correctly": function () { this.someLogger = this.container.get('some-logger'); assert.isObject(this.someLogger.transports); assert.instanceOf(this.someLogger.transports['webhook'], winston.transports.Webhook); assert.strictEqual(this.someLogger.transports['webhook'], this.transports[0]); }, "a second call to get()": { "should respond with the same transport object": function () { this.someOtherLogger = this.container.get('some-other-logger'); assert.isObject(this.someOtherLogger.transports); assert.instanceOf(this.someOtherLogger.transports['webhook'], winston.transports.Webhook); assert.strictEqual(this.someOtherLogger.transports['webhook'], this.transports[0]); assert.strictEqual(this.someOtherLogger.transports['webhook'], this.someLogger.transports['webhook']); } } } } }).export(module);