1 define(function(require) {
4 /* global describe, it, beforeEach */
5 var chai = require('libs/chai'),
6 logging = require('./logging.js'),
10 // Global log object for defining expectations
16 append: function(msg) {
19 contains: function(msg) {
20 return this._msgs.indexOf(msg) !== -1;
23 return this._msgs.length ? this._msgs[this._msgs.length] : undefined;
26 return this._msgs.length === 0;
28 getMessages: function() {
33 // Loggin handler that just writes to the global logger object
34 var testLoggingHandler = function(record) {
35 log.append(record.message);
38 describe('Logging', function() {
41 beforeEach(function() {
43 logging.clearConfig();
46 var setConfig = function(loggerLevel, handlerLevel) {
50 handler: testLoggingHandler,
57 handlers: ['testHandler']
63 it('works with sample config', function() {
64 setConfig('debug', 'debug');
65 var logger = logging.getLogger('some.name');
66 logger.debug('debug msg');
67 expect(log.contains('debug msg')).to.equal(true);
70 it('filters level on loggers', function() {
71 setConfig('info', 'debug');
72 var logger = logging.getLogger('some.name');
73 logger.debug('debug msg');
74 expect(log.isEmpty()).to.equal(true, 'debug message filtered out');
75 logger.info('info msg');
76 expect(log.contains('info msg')).to.equal(true, 'info message passed');
79 it('filters level on handlers', function() {
80 setConfig('debug', 'info');
81 var logger = logging.getLogger('some.name');
82 logger.debug('debug msg');
83 expect(log.isEmpty()).to.equal(true, 'debug message filtered out');
84 logger.info('info msg');
85 expect(log.contains('info msg')).to.equal(true, 'info message passed');
88 it('propagates message to upper logger depending on the propagate flag', function() {
92 handler: testLoggingHandler,
99 handlers: ['testHandler']
103 handlers: ['testHandler']
109 config.loggers.logger1.propagate = false;
110 logging.setConfig(config);
112 logger = logging.getLogger('logger1');
114 logger.debug('msg1');
115 expect(log.contains('msg1')).to.equal(true, 'first message logged');
116 expect(log.getMessages().length === 1).to.equal(true, 'logger didn\'t propagate its message');
119 config.loggers.logger1.propagate = true;
120 logging.setConfig(config);
122 logger.debug('msg2');
123 expect(log.contains('msg2')).to.equal(true, 'second message logged');
124 expect(log.getMessages().length === 2).to.equal(true, 'second message propagated to upper logger');