2011-07-17 08:05:43 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
2012-11-29 05:40:27 +00:00
|
|
|
function initService(debugEnabled) {
|
|
|
|
|
return module(function($logProvider){
|
|
|
|
|
$logProvider.debugEnabled(debugEnabled);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2011-02-15 06:12:45 +00:00
|
|
|
describe('$log', function() {
|
2012-11-29 05:40:27 +00:00
|
|
|
var $window, logger, log, warn, info, error, debug;
|
2012-03-19 18:15:09 +00:00
|
|
|
|
2011-10-17 23:56:56 +00:00
|
|
|
|
|
|
|
|
|
2012-01-12 19:06:10 +00:00
|
|
|
beforeEach(module(function($provide){
|
2012-08-09 17:20:39 +00:00
|
|
|
$window = {navigator: {}, document: {}};
|
2011-10-17 23:56:56 +00:00
|
|
|
logger = '';
|
2012-03-19 18:15:09 +00:00
|
|
|
log = function() { logger+= 'log;'; };
|
|
|
|
|
warn = function() { logger+= 'warn;'; };
|
|
|
|
|
info = function() { logger+= 'info;'; };
|
|
|
|
|
error = function() { logger+= 'error;'; };
|
2012-11-29 05:40:27 +00:00
|
|
|
debug = function() { logger+= 'debug;'; };
|
2012-03-19 18:15:09 +00:00
|
|
|
|
2012-03-08 23:59:32 +00:00
|
|
|
$provide.provider('$log', $LogProvider);
|
2012-01-07 02:10:47 +00:00
|
|
|
$provide.value('$exceptionHandler', angular.mock.rethrow);
|
2011-11-02 04:09:54 +00:00
|
|
|
$provide.value('$window', $window);
|
2011-10-17 23:56:56 +00:00
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
it('should use console if present', inject(
|
|
|
|
|
function(){
|
|
|
|
|
$window.console = {log: log,
|
|
|
|
|
warn: warn,
|
|
|
|
|
info: info,
|
2012-11-29 05:40:27 +00:00
|
|
|
error: error,
|
|
|
|
|
debug: debug};
|
2011-10-17 23:56:56 +00:00
|
|
|
},
|
|
|
|
|
function($log) {
|
|
|
|
|
$log.log();
|
|
|
|
|
$log.warn();
|
|
|
|
|
$log.info();
|
|
|
|
|
$log.error();
|
2012-11-29 05:40:27 +00:00
|
|
|
$log.debug();
|
|
|
|
|
expect(logger).toEqual('log;warn;info;error;debug;');
|
2011-10-17 23:56:56 +00:00
|
|
|
}
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should use console.log() if other not present', inject(
|
|
|
|
|
function(){
|
|
|
|
|
$window.console = {log: log};
|
|
|
|
|
},
|
|
|
|
|
function($log) {
|
|
|
|
|
$log.log();
|
|
|
|
|
$log.warn();
|
|
|
|
|
$log.info();
|
|
|
|
|
$log.error();
|
2012-11-29 05:40:27 +00:00
|
|
|
$log.debug();
|
|
|
|
|
expect(logger).toEqual('log;log;log;log;log;');
|
2011-10-17 23:56:56 +00:00
|
|
|
}
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should use noop if no console', inject(
|
|
|
|
|
function($log) {
|
|
|
|
|
$log.log();
|
|
|
|
|
$log.warn();
|
|
|
|
|
$log.info();
|
|
|
|
|
$log.error();
|
2012-11-29 05:40:27 +00:00
|
|
|
$log.debug();
|
2011-10-17 23:56:56 +00:00
|
|
|
}
|
|
|
|
|
));
|
2011-02-15 06:12:45 +00:00
|
|
|
|
2013-09-21 00:33:16 +00:00
|
|
|
describe("IE logging behavior", function() {
|
|
|
|
|
function removeApplyFunctionForIE() {
|
|
|
|
|
log.apply = log.call =
|
|
|
|
|
warn.apply = warn.call =
|
|
|
|
|
info.apply = info.call =
|
|
|
|
|
error.apply = error.call =
|
|
|
|
|
debug.apply = debug.call = null;
|
2011-02-15 06:12:45 +00:00
|
|
|
|
2013-09-21 00:33:16 +00:00
|
|
|
$window.console = {log: log,
|
|
|
|
|
warn: warn,
|
|
|
|
|
info: info,
|
|
|
|
|
error: error,
|
|
|
|
|
debug: debug};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
it("should work in IE where console.error doesn't have an apply method", inject(
|
|
|
|
|
removeApplyFunctionForIE,
|
2012-03-19 18:15:09 +00:00
|
|
|
function($log) {
|
|
|
|
|
$log.log.apply($log);
|
|
|
|
|
$log.warn.apply($log);
|
|
|
|
|
$log.info.apply($log);
|
|
|
|
|
$log.error.apply($log);
|
2012-11-29 05:40:27 +00:00
|
|
|
$log.debug.apply($log);
|
|
|
|
|
expect(logger).toEqual('log;warn;info;error;debug;');
|
2012-03-19 18:15:09 +00:00
|
|
|
})
|
2013-09-21 00:33:16 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
it("should not attempt to log the second argument in IE if it is not specified", inject(
|
|
|
|
|
function() {
|
|
|
|
|
log = function(arg1, arg2) { logger+= 'log;' + arg2; };
|
|
|
|
|
warn = function(arg1, arg2) { logger+= 'warn;' + arg2; };
|
|
|
|
|
info = function(arg1, arg2) { logger+= 'info;' + arg2; };
|
|
|
|
|
error = function(arg1, arg2) { logger+= 'error;' + arg2; };
|
|
|
|
|
debug = function(arg1, arg2) { logger+= 'debug;' + arg2; };
|
|
|
|
|
},
|
|
|
|
|
removeApplyFunctionForIE,
|
|
|
|
|
function($log) {
|
|
|
|
|
$log.log();
|
|
|
|
|
$log.warn();
|
|
|
|
|
$log.info();
|
|
|
|
|
$log.error();
|
|
|
|
|
$log.debug();
|
|
|
|
|
expect(logger).toEqual('log;warn;info;error;debug;');
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
});
|
2012-03-19 18:15:09 +00:00
|
|
|
|
2012-11-29 05:40:27 +00:00
|
|
|
describe("$log.debug", function () {
|
2013-09-21 00:33:16 +00:00
|
|
|
|
2012-11-29 05:40:27 +00:00
|
|
|
beforeEach(initService(false));
|
2013-09-21 00:33:16 +00:00
|
|
|
|
2012-11-29 05:40:27 +00:00
|
|
|
it("should skip debugging output if disabled", inject(
|
|
|
|
|
function(){
|
|
|
|
|
$window.console = {log: log,
|
|
|
|
|
warn: warn,
|
|
|
|
|
info: info,
|
|
|
|
|
error: error,
|
|
|
|
|
debug: debug};
|
2013-09-21 00:33:16 +00:00
|
|
|
},
|
2012-11-29 05:40:27 +00:00
|
|
|
function($log) {
|
|
|
|
|
$log.log();
|
|
|
|
|
$log.warn();
|
|
|
|
|
$log.info();
|
|
|
|
|
$log.error();
|
|
|
|
|
$log.debug();
|
|
|
|
|
expect(logger).toEqual('log;warn;info;error;');
|
|
|
|
|
}
|
|
|
|
|
));
|
2013-09-21 00:33:16 +00:00
|
|
|
|
2012-11-29 05:40:27 +00:00
|
|
|
});
|
2012-03-19 18:15:09 +00:00
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
describe('$log.error', function() {
|
2011-02-15 06:12:45 +00:00
|
|
|
var e, $log, errorArgs;
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
beforeEach(function() {
|
2011-02-15 06:12:45 +00:00
|
|
|
e = new Error('');
|
|
|
|
|
e.message = undefined;
|
|
|
|
|
e.sourceURL = undefined;
|
|
|
|
|
e.line = undefined;
|
|
|
|
|
e.stack = undefined;
|
|
|
|
|
|
2011-11-02 23:32:46 +00:00
|
|
|
$log = new $LogProvider().$get[1]({console:{error:function() {
|
2011-11-23 05:28:39 +00:00
|
|
|
errorArgs = [].slice.call(arguments, 0);
|
2011-02-15 06:12:45 +00:00
|
|
|
}}});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
it('should pass error if does not have trace', function() {
|
2011-02-15 06:12:45 +00:00
|
|
|
$log.error('abc', e);
|
|
|
|
|
expect(errorArgs).toEqual(['abc', e]);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
it('should print stack', function() {
|
2011-02-15 06:12:45 +00:00
|
|
|
e.stack = 'stack';
|
|
|
|
|
$log.error('abc', e);
|
|
|
|
|
expect(errorArgs).toEqual(['abc', 'stack']);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
it('should print line', function() {
|
2011-02-15 06:12:45 +00:00
|
|
|
e.message = 'message';
|
|
|
|
|
e.sourceURL = 'sourceURL';
|
|
|
|
|
e.line = '123';
|
|
|
|
|
$log.error('abc', e);
|
|
|
|
|
expect(errorArgs).toEqual(['abc', 'message\nsourceURL:123']);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|