mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-18 07:50:22 +00:00
In IE window.console.log and friends are functions that don't have apply or call fns. For this reason we have to treat them specially and do our best to log at least something when running in this browser. Closes #805
121 lines
2.8 KiB
JavaScript
121 lines
2.8 KiB
JavaScript
'use strict';
|
|
|
|
describe('$log', function() {
|
|
var $window, logger, log, warn, info, error;
|
|
|
|
|
|
|
|
beforeEach(module(function($provide){
|
|
$window = {};
|
|
logger = '';
|
|
log = function() { logger+= 'log;'; };
|
|
warn = function() { logger+= 'warn;'; };
|
|
info = function() { logger+= 'info;'; };
|
|
error = function() { logger+= 'error;'; };
|
|
|
|
$provide.provider('$log', $LogProvider);
|
|
$provide.value('$exceptionHandler', angular.mock.rethrow);
|
|
$provide.value('$window', $window);
|
|
}));
|
|
|
|
it('should use console if present', inject(
|
|
function(){
|
|
$window.console = {log: log,
|
|
warn: warn,
|
|
info: info,
|
|
error: error};
|
|
},
|
|
function($log) {
|
|
$log.log();
|
|
$log.warn();
|
|
$log.info();
|
|
$log.error();
|
|
expect(logger).toEqual('log;warn;info;error;');
|
|
}
|
|
));
|
|
|
|
|
|
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();
|
|
expect(logger).toEqual('log;log;log;log;');
|
|
}
|
|
));
|
|
|
|
|
|
it('should use noop if no console', inject(
|
|
function($log) {
|
|
$log.log();
|
|
$log.warn();
|
|
$log.info();
|
|
$log.error();
|
|
}
|
|
));
|
|
|
|
|
|
it("should work in IE where console.error doesn't have apply method", inject(
|
|
function() {
|
|
log.apply = log.call =
|
|
warn.apply = warn.call =
|
|
info.apply = info.call =
|
|
error.apply = error.call = null;
|
|
|
|
$window.console = {log: log,
|
|
warn: warn,
|
|
info: info,
|
|
error: error};
|
|
},
|
|
function($log) {
|
|
$log.log.apply($log);
|
|
$log.warn.apply($log);
|
|
$log.info.apply($log);
|
|
$log.error.apply($log);
|
|
expect(logger).toEqual('log;warn;info;error;');
|
|
})
|
|
);
|
|
|
|
|
|
describe('$log.error', function() {
|
|
var e, $log, errorArgs;
|
|
|
|
beforeEach(function() {
|
|
e = new Error('');
|
|
e.message = undefined;
|
|
e.sourceURL = undefined;
|
|
e.line = undefined;
|
|
e.stack = undefined;
|
|
|
|
$log = new $LogProvider().$get[1]({console:{error:function() {
|
|
errorArgs = [].slice.call(arguments, 0);
|
|
}}});
|
|
});
|
|
|
|
|
|
it('should pass error if does not have trace', function() {
|
|
$log.error('abc', e);
|
|
expect(errorArgs).toEqual(['abc', e]);
|
|
});
|
|
|
|
|
|
it('should print stack', function() {
|
|
e.stack = 'stack';
|
|
$log.error('abc', e);
|
|
expect(errorArgs).toEqual(['abc', 'stack']);
|
|
});
|
|
|
|
|
|
it('should print line', function() {
|
|
e.message = 'message';
|
|
e.sourceURL = 'sourceURL';
|
|
e.line = '123';
|
|
$log.error('abc', e);
|
|
expect(errorArgs).toEqual(['abc', 'message\nsourceURL:123']);
|
|
});
|
|
});
|
|
});
|