From f5d08963b0c836b10133a94d03a81254242661eb Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Tue, 25 Jan 2011 20:44:44 -0800 Subject: split mocks and create $log and $exceptionHandler mocks - split mocks between angular-mocks.js and mocks.js - src/angular-mocks.js now contains only mocks that we want to ship - test/mocks.js contains mocks that we use internally for testing angular - created angular.mock namespace - created public $exceptionHandler mock rethrows errors - created public $log mock stores all logs messages in an array that can be accessed to make assertions - internally we now have factory to create $exceptionHandler that we can assert on - internally we also keep track of all messages logged and fail tests if messages were not expected and cleaned up (checked via global beforeEach and afterEach) - updated RakeFile and docs reader.js to point to the new angular-mocks.js location - made real $exceptionHandler and $log factories accessible from tests and simplified their specs - fixed typos in several spec descriptions - added log assertions throughout the test suite --- test/servicesSpec.js | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'test/servicesSpec.js') diff --git a/test/servicesSpec.js b/test/servicesSpec.js index e9b16621..c3c10552 100644 --- a/test/servicesSpec.js +++ b/test/servicesSpec.js @@ -31,8 +31,14 @@ describe("service", function(){ function warn(){ logger+= 'warn;'; } function info(){ logger+= 'info;'; } function error(){ logger+= 'error;'; } - var scope = createScope({}, angularService, {$window: {console:{log:log, warn:warn, info:info, error:error}}, $document:[{cookie:''}]}), + var scope = createScope({}, {$log: $logFactory}, + {$exceptionHandler: rethrow, + $window: {console: {log: log, + warn: warn, + info: info, + error: error}}}), $log = scope.$service('$log'); + $log.log(); $log.warn(); $log.info(); @@ -40,10 +46,12 @@ describe("service", function(){ expect(logger).toEqual('log;warn;info;error;'); }); - it('should use console.log if other not present', function(){ + it('should use console.log() if other not present', function(){ var logger = ""; function log(){ logger+= 'log;'; } - var scope = createScope({}, angularService, {$window: {console:{log:log}}, $document:[{cookie:''}]}); + var scope = createScope({}, {$log: $logFactory}, + {$window: {console:{log:log}}, + $exceptionHandler: rethrow}); var $log = scope.$service('$log'); $log.log(); $log.warn(); @@ -53,7 +61,9 @@ describe("service", function(){ }); it('should use noop if no console', function(){ - var scope = createScope({}, angularService, {$window: {}, $document:[{cookie:''}]}), + var scope = createScope({}, {$log: $logFactory}, + {$window: {}, + $exceptionHandler: rethrow}), $log = scope.$service('$log'); $log.log(); $log.warn(); @@ -61,8 +71,8 @@ describe("service", function(){ $log.error(); }); - describe('Error', function(){ - var e, $log, $console, errorArgs; + describe('error', function(){ + var e, $log, errorArgs; beforeEach(function(){ e = new Error(''); e.message = undefined; @@ -70,19 +80,19 @@ describe("service", function(){ e.line = undefined; e.stack = undefined; - $console = angular.service('$log')({console:{error:function(){ + $log = $logFactory({console:{error:function(){ errorArgs = arguments; }}}); }); it('should pass error if does not have trace', function(){ - $console.error('abc', e); + $log.error('abc', e); expect(errorArgs).toEqual(['abc', e]); }); it('should print stack', function(){ e.stack = 'stack'; - $console.error('abc', e); + $log.error('abc', e); expect(errorArgs).toEqual(['abc', 'stack']); }); @@ -90,7 +100,7 @@ describe("service", function(){ e.message = 'message'; e.sourceURL = 'sourceURL'; e.line = '123'; - $console.error('abc', e); + $log.error('abc', e); expect(errorArgs).toEqual(['abc', 'message\nsourceURL:123']); }); @@ -100,10 +110,13 @@ describe("service", function(){ describe("$exceptionHandler", function(){ it('should log errors', function(){ - var error = ''; - $log.error = function(m) { error += m; }; - scope.$service('$exceptionHandler')('myError'); - expect(error).toEqual('myError'); + var scope = createScope({}, {$exceptionHandler: $exceptionHandlerFactory}, + {$log: $logMock}), + $log = scope.$service('$log'), + $exceptionHandler = scope.$service('$exceptionHandler'); + + $exceptionHandler('myError'); + expect($log.error.logs.shift()).toEqual(['myError']); }); }); -- cgit v1.2.3