From 15213ec212769837cb2b7e781ffc5bfd598d27ca Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Mon, 19 Mar 2012 11:15:09 -0700 Subject: fix($log): avoid console.log.apply calls in IE 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 --- test/service/logSpec.js | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'test/service/logSpec.js') diff --git a/test/service/logSpec.js b/test/service/logSpec.js index 72ce6a5c..269057a2 100644 --- a/test/service/logSpec.js +++ b/test/service/logSpec.js @@ -1,17 +1,18 @@ 'use strict'; describe('$log', function() { - var $window; - var logger; + var $window, logger, log, warn, info, error; + - function log() { logger+= 'log;'; } - function warn() { logger+= 'warn;'; } - function info() { logger+= 'info;'; } - function error() { logger+= '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); @@ -58,6 +59,28 @@ describe('$log', function() { )); + 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; -- cgit v1.2.3