blob: 2fcc26a384467a0066bdf7c48c81d4a716225e5a [file] [log] [blame]
/*
* 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);