aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng/logSpec.js
diff options
context:
space:
mode:
authorMisko Hevery2012-03-23 14:03:24 -0700
committerMisko Hevery2012-03-28 11:16:35 -0700
commit2430f52bb97fa9d682e5f028c977c5bf94c5ec38 (patch)
treee7529b741d70199f36d52090b430510bad07f233 /test/ng/logSpec.js
parent944098a4e0f753f06b40c73ca3e79991cec6c2e2 (diff)
downloadangular.js-2430f52bb97fa9d682e5f028c977c5bf94c5ec38.tar.bz2
chore(module): move files around in preparation for more modules
Diffstat (limited to 'test/ng/logSpec.js')
-rw-r--r--test/ng/logSpec.js121
1 files changed, 121 insertions, 0 deletions
diff --git a/test/ng/logSpec.js b/test/ng/logSpec.js
new file mode 100644
index 00000000..269057a2
--- /dev/null
+++ b/test/ng/logSpec.js
@@ -0,0 +1,121 @@
+'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']);
+ });
+ });
+});