angular_velocity 0.0.6alpha → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -1
- data/lib/angular_velocity/version.rb +1 -1
- data/lib/generators/angular_velocity/install/templates/angular-cookies.js +16 -3
- data/lib/generators/angular_velocity/install/templates/angular-mocks.js +144 -103
- data/lib/generators/angular_velocity/install/templates/angular-resource.js +19 -7
- data/lib/generators/angular_velocity/install/templates/angular-sanitize.js +27 -6
- data/lib/generators/angular_velocity/install/templates/angular-scenario.js +885 -459
- data/lib/generators/angular_velocity/install/templates/angular.js +754 -356
- data/lib/generators/angular_velocity/install/templates/templates_controller.rb +2 -1
- metadata +6 -6
data/Gemfile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.0.
|
2
|
+
* @license AngularJS v1.0.8
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -24,6 +24,17 @@ angular.module('ngCookies', ['ng']).
|
|
24
24
|
* Only a simple Object is exposed and by adding or removing properties to/from
|
25
25
|
* this object, new cookies are created/deleted at the end of current $eval.
|
26
26
|
*
|
27
|
+
* # Installation
|
28
|
+
* To use $cookies make sure you have included the `angular-cookies.js` that comes in Angular
|
29
|
+
* package. You can also find this file on Google CDN, bower as well as at
|
30
|
+
* {@link http://code.angularjs.org/ code.angularjs.org}.
|
31
|
+
*
|
32
|
+
* Finally load the module in your application:
|
33
|
+
*
|
34
|
+
* angular.module('app', ['ngCookies']);
|
35
|
+
*
|
36
|
+
* and you are ready to get started!
|
37
|
+
*
|
27
38
|
* @example
|
28
39
|
<doc:example>
|
29
40
|
<doc:source>
|
@@ -145,7 +156,8 @@ angular.module('ngCookies', ['ng']).
|
|
145
156
|
* @returns {Object} Deserialized cookie value.
|
146
157
|
*/
|
147
158
|
get: function(key) {
|
148
|
-
|
159
|
+
var value = $cookies[key];
|
160
|
+
return value ? angular.fromJson(value) : value;
|
149
161
|
},
|
150
162
|
|
151
163
|
/**
|
@@ -180,4 +192,5 @@ angular.module('ngCookies', ['ng']).
|
|
180
192
|
|
181
193
|
}]);
|
182
194
|
|
183
|
-
|
195
|
+
|
196
|
+
})(window, window.angular);
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.0.
|
2
|
+
* @license AngularJS v1.0.8
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*
|
@@ -29,7 +29,7 @@ angular.mock = {};
|
|
29
29
|
* that there are several helper methods available which can be used in tests.
|
30
30
|
*/
|
31
31
|
angular.mock.$BrowserProvider = function() {
|
32
|
-
this.$get = function(){
|
32
|
+
this.$get = function() {
|
33
33
|
return new angular.mock.$Browser();
|
34
34
|
};
|
35
35
|
};
|
@@ -241,10 +241,10 @@ angular.mock.$ExceptionHandlerProvider = function() {
|
|
241
241
|
*
|
242
242
|
* @param {string} mode Mode of operation, defaults to `rethrow`.
|
243
243
|
*
|
244
|
-
* - `rethrow`: If any errors are
|
244
|
+
* - `rethrow`: If any errors are passed into the handler in tests, it typically
|
245
245
|
* means that there is a bug in the application or test, so this mock will
|
246
246
|
* make these tests fail.
|
247
|
-
* - `log`: Sometimes it is desirable to test that an error is
|
247
|
+
* - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log` mode stores an
|
248
248
|
* array of errors in `$exceptionHandler.errors`, to allow later assertion of them.
|
249
249
|
* See {@link ngMock.$log#assertEmpty assertEmpty()} and
|
250
250
|
* {@link ngMock.$log#reset reset()}
|
@@ -322,7 +322,13 @@ angular.mock.$LogProvider = function() {
|
|
322
322
|
* @propertyOf ngMock.$log
|
323
323
|
*
|
324
324
|
* @description
|
325
|
-
* Array of logged
|
325
|
+
* Array of messages logged using {@link ngMock.$log#log}.
|
326
|
+
*
|
327
|
+
* @example
|
328
|
+
* <pre>
|
329
|
+
* $log.log('Some Log');
|
330
|
+
* var first = $log.log.logs.unshift();
|
331
|
+
* </pre>
|
326
332
|
*/
|
327
333
|
$log.log.logs = [];
|
328
334
|
/**
|
@@ -331,7 +337,13 @@ angular.mock.$LogProvider = function() {
|
|
331
337
|
* @propertyOf ngMock.$log
|
332
338
|
*
|
333
339
|
* @description
|
334
|
-
* Array of logged
|
340
|
+
* Array of messages logged using {@link ngMock.$log#warn}.
|
341
|
+
*
|
342
|
+
* @example
|
343
|
+
* <pre>
|
344
|
+
* $log.warn('Some Warning');
|
345
|
+
* var first = $log.warn.logs.unshift();
|
346
|
+
* </pre>
|
335
347
|
*/
|
336
348
|
$log.warn.logs = [];
|
337
349
|
/**
|
@@ -340,7 +352,13 @@ angular.mock.$LogProvider = function() {
|
|
340
352
|
* @propertyOf ngMock.$log
|
341
353
|
*
|
342
354
|
* @description
|
343
|
-
* Array of logged
|
355
|
+
* Array of messages logged using {@link ngMock.$log#info}.
|
356
|
+
*
|
357
|
+
* @example
|
358
|
+
* <pre>
|
359
|
+
* $log.info('Some Info');
|
360
|
+
* var first = $log.info.logs.unshift();
|
361
|
+
* </pre>
|
344
362
|
*/
|
345
363
|
$log.info.logs = [];
|
346
364
|
/**
|
@@ -349,7 +367,13 @@ angular.mock.$LogProvider = function() {
|
|
349
367
|
* @propertyOf ngMock.$log
|
350
368
|
*
|
351
369
|
* @description
|
352
|
-
* Array of logged
|
370
|
+
* Array of messages logged using {@link ngMock.$log#error}.
|
371
|
+
*
|
372
|
+
* @example
|
373
|
+
* <pre>
|
374
|
+
* $log.log('Some Error');
|
375
|
+
* var first = $log.error.logs.unshift();
|
376
|
+
* </pre>
|
353
377
|
*/
|
354
378
|
$log.error.logs = [];
|
355
379
|
};
|
@@ -388,7 +412,7 @@ angular.mock.$LogProvider = function() {
|
|
388
412
|
(function() {
|
389
413
|
var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
|
390
414
|
|
391
|
-
function jsonStringToDate(string){
|
415
|
+
function jsonStringToDate(string) {
|
392
416
|
var match;
|
393
417
|
if (match = string.match(R_ISO8061_STR)) {
|
394
418
|
var date = new Date(0),
|
@@ -430,7 +454,7 @@ angular.mock.$LogProvider = function() {
|
|
430
454
|
*
|
431
455
|
* *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
|
432
456
|
*
|
433
|
-
* Mock of the Date type which has its timezone specified via
|
457
|
+
* Mock of the Date type which has its timezone specified via constructor arg.
|
434
458
|
*
|
435
459
|
* The main purpose is to create Date-like instances with timezone fixed to the specified timezone
|
436
460
|
* offset, so that we can test code that depends on local timezone settings without dependency on
|
@@ -653,14 +677,14 @@ angular.mock.dump = function(object) {
|
|
653
677
|
* @ngdoc object
|
654
678
|
* @name ngMock.$httpBackend
|
655
679
|
* @description
|
656
|
-
* Fake HTTP backend implementation suitable for unit testing
|
680
|
+
* Fake HTTP backend implementation suitable for unit testing applications that use the
|
657
681
|
* {@link ng.$http $http service}.
|
658
682
|
*
|
659
|
-
* *Note*: For fake
|
683
|
+
* *Note*: For fake HTTP backend implementation suitable for end-to-end testing or backend-less
|
660
684
|
* development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
|
661
685
|
*
|
662
686
|
* During unit testing, we want our unit tests to run quickly and have no external dependencies so
|
663
|
-
* we don
|
687
|
+
* we don’t want to send {@link https://developer.mozilla.org/en/xmlhttprequest XHR} or
|
664
688
|
* {@link http://en.wikipedia.org/wiki/JSONP JSONP} requests to a real server. All we really need is
|
665
689
|
* to verify whether a certain request has been sent or not, or alternatively just let the
|
666
690
|
* application make requests, respond with pre-trained responses and assert that the end result is
|
@@ -749,75 +773,100 @@ angular.mock.dump = function(object) {
|
|
749
773
|
*
|
750
774
|
*
|
751
775
|
* # Unit testing with mock $httpBackend
|
776
|
+
* The following code shows how to setup and use the mock backend in unit testing a controller.
|
777
|
+
* First we create the controller under test
|
752
778
|
*
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
$scope.user = data;
|
758
|
-
});
|
759
|
-
|
760
|
-
this.saveMessage = function(message) {
|
761
|
-
$scope.status = 'Saving...';
|
762
|
-
$http.post('/add-msg.py', message).success(function(response) {
|
763
|
-
$scope.status = '';
|
764
|
-
}).error(function() {
|
765
|
-
$scope.status = 'ERROR!';
|
766
|
-
});
|
767
|
-
};
|
768
|
-
}
|
779
|
+
<pre>
|
780
|
+
// The controller code
|
781
|
+
function MyController($scope, $http) {
|
782
|
+
var authToken;
|
769
783
|
|
770
|
-
|
771
|
-
|
784
|
+
$http.get('/auth.py').success(function(data, status, headers) {
|
785
|
+
authToken = headers('A-Token');
|
786
|
+
$scope.user = data;
|
787
|
+
});
|
772
788
|
|
773
|
-
|
774
|
-
|
789
|
+
$scope.saveMessage = function(message) {
|
790
|
+
var headers = { 'Authorization': authToken };
|
791
|
+
$scope.status = 'Saving...';
|
775
792
|
|
776
|
-
|
777
|
-
|
778
|
-
|
793
|
+
$http.post('/add-msg.py', message, { headers: headers } ).success(function(response) {
|
794
|
+
$scope.status = '';
|
795
|
+
}).error(function() {
|
796
|
+
$scope.status = 'ERROR!';
|
797
|
+
});
|
798
|
+
};
|
799
|
+
}
|
800
|
+
</pre>
|
801
|
+
*
|
802
|
+
* Now we setup the mock backend and create the test specs.
|
803
|
+
*
|
804
|
+
<pre>
|
805
|
+
// testing controller
|
806
|
+
describe('MyController', function() {
|
807
|
+
var $httpBackend, $rootScope, createController;
|
779
808
|
|
809
|
+
beforeEach(inject(function($injector) {
|
810
|
+
// Set up the mock http service responses
|
811
|
+
$httpBackend = $injector.get('$httpBackend');
|
812
|
+
// backend definition common for all tests
|
813
|
+
$httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
|
780
814
|
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
815
|
+
// Get hold of a scope (i.e. the root scope)
|
816
|
+
$rootScope = $injector.get('$rootScope');
|
817
|
+
// The $controller service is used to create instances of controllers
|
818
|
+
var $controller = $injector.get('$controller');
|
785
819
|
|
820
|
+
createController = function() {
|
821
|
+
return $controller('MyController', {'$scope' : $rootScope });
|
822
|
+
};
|
823
|
+
}));
|
786
824
|
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
825
|
+
|
826
|
+
afterEach(function() {
|
827
|
+
$httpBackend.verifyNoOutstandingExpectation();
|
828
|
+
$httpBackend.verifyNoOutstandingRequest();
|
829
|
+
});
|
792
830
|
|
793
831
|
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
$httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
|
832
|
+
it('should fetch authentication token', function() {
|
833
|
+
$httpBackend.expectGET('/auth.py');
|
834
|
+
var controller = createController();
|
835
|
+
$httpBackend.flush();
|
836
|
+
});
|
800
837
|
|
801
|
-
var controller = scope.$new(MyController);
|
802
|
-
$httpBackend.flush();
|
803
|
-
controller.saveMessage('message content');
|
804
|
-
expect(controller.status).toBe('Saving...');
|
805
|
-
$httpBackend.flush();
|
806
|
-
expect(controller.status).toBe('');
|
807
|
-
});
|
808
838
|
|
839
|
+
it('should send msg to server', function() {
|
840
|
+
var controller = createController();
|
841
|
+
$httpBackend.flush();
|
809
842
|
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
return headers['Authorization'] == 'xxx';
|
815
|
-
}).respond(201, '');
|
843
|
+
// now you don’t care about the authentication, but
|
844
|
+
// the controller will still send the request and
|
845
|
+
// $httpBackend will respond without you having to
|
846
|
+
// specify the expectation and response for this request
|
816
847
|
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
848
|
+
$httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
|
849
|
+
$rootScope.saveMessage('message content');
|
850
|
+
expect($rootScope.status).toBe('Saving...');
|
851
|
+
$httpBackend.flush();
|
852
|
+
expect($rootScope.status).toBe('');
|
853
|
+
});
|
854
|
+
|
855
|
+
|
856
|
+
it('should send auth header', function() {
|
857
|
+
var controller = createController();
|
858
|
+
$httpBackend.flush();
|
859
|
+
|
860
|
+
$httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
|
861
|
+
// check if the header was send, if it wasn't the expectation won't
|
862
|
+
// match the request and the test will fail
|
863
|
+
return headers['Authorization'] == 'xxx';
|
864
|
+
}).respond(201, '');
|
865
|
+
|
866
|
+
$rootScope.saveMessage('whatever');
|
867
|
+
$httpBackend.flush();
|
868
|
+
});
|
869
|
+
});
|
821
870
|
</pre>
|
822
871
|
*/
|
823
872
|
angular.mock.$HttpBackendProvider = function() {
|
@@ -926,8 +975,8 @@ function createHttpBackendMock($delegate, $browser) {
|
|
926
975
|
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
|
927
976
|
* request is handled.
|
928
977
|
*
|
929
|
-
* - respond
|
930
|
-
*
|
978
|
+
* - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
|
979
|
+
* – The respond method takes a set of static data to be returned or a function that can return
|
931
980
|
* an array containing response status (number), response data (string) and response headers
|
932
981
|
* (Object).
|
933
982
|
*/
|
@@ -1039,14 +1088,16 @@ function createHttpBackendMock($delegate, $browser) {
|
|
1039
1088
|
*
|
1040
1089
|
* @param {string} method HTTP method.
|
1041
1090
|
* @param {string|RegExp} url HTTP url.
|
1042
|
-
* @param {(string|RegExp)=} data HTTP request body
|
1091
|
+
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
|
1092
|
+
* receives data string and returns true if the data is as expected, or Object if request body
|
1093
|
+
* is in JSON format.
|
1043
1094
|
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
|
1044
1095
|
* object and returns true if the headers match the current expectation.
|
1045
1096
|
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
|
1046
1097
|
* request is handled.
|
1047
1098
|
*
|
1048
|
-
* - respond
|
1049
|
-
*
|
1099
|
+
* - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
|
1100
|
+
* – The respond method takes a set of static data to be returned or a function that can return
|
1050
1101
|
* an array containing response status (number), response data (string) and response headers
|
1051
1102
|
* (Object).
|
1052
1103
|
*/
|
@@ -1108,7 +1159,9 @@ function createHttpBackendMock($delegate, $browser) {
|
|
1108
1159
|
* Creates a new request expectation for POST requests. For more info see `expect()`.
|
1109
1160
|
*
|
1110
1161
|
* @param {string|RegExp} url HTTP url.
|
1111
|
-
* @param {(string|RegExp)=} data HTTP request body
|
1162
|
+
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
|
1163
|
+
* receives data string and returns true if the data is as expected, or Object if request body
|
1164
|
+
* is in JSON format.
|
1112
1165
|
* @param {Object=} headers HTTP headers.
|
1113
1166
|
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
|
1114
1167
|
* request is handled.
|
@@ -1122,7 +1175,9 @@ function createHttpBackendMock($delegate, $browser) {
|
|
1122
1175
|
* Creates a new request expectation for PUT requests. For more info see `expect()`.
|
1123
1176
|
*
|
1124
1177
|
* @param {string|RegExp} url HTTP url.
|
1125
|
-
* @param {(string|RegExp)=} data HTTP request body
|
1178
|
+
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
|
1179
|
+
* receives data string and returns true if the data is as expected, or Object if request body
|
1180
|
+
* is in JSON format.
|
1126
1181
|
* @param {Object=} headers HTTP headers.
|
1127
1182
|
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
|
1128
1183
|
* request is handled.
|
@@ -1136,7 +1191,9 @@ function createHttpBackendMock($delegate, $browser) {
|
|
1136
1191
|
* Creates a new request expectation for PATCH requests. For more info see `expect()`.
|
1137
1192
|
*
|
1138
1193
|
* @param {string|RegExp} url HTTP url.
|
1139
|
-
* @param {(string|RegExp)=} data HTTP request body
|
1194
|
+
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
|
1195
|
+
* receives data string and returns true if the data is as expected, or Object if request body
|
1196
|
+
* is in JSON format.
|
1140
1197
|
* @param {Object=} headers HTTP headers.
|
1141
1198
|
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
|
1142
1199
|
* request is handled.
|
@@ -1196,7 +1253,7 @@ function createHttpBackendMock($delegate, $browser) {
|
|
1196
1253
|
* "afterEach" clause.
|
1197
1254
|
*
|
1198
1255
|
* <pre>
|
1199
|
-
* afterEach($httpBackend.
|
1256
|
+
* afterEach($httpBackend.verifyNoOutstandingExpectation);
|
1200
1257
|
* </pre>
|
1201
1258
|
*/
|
1202
1259
|
$httpBackend.verifyNoOutstandingExpectation = function() {
|
@@ -1389,8 +1446,8 @@ angular.module('ngMock', ['ng']).provider({
|
|
1389
1446
|
$rootElement: angular.mock.$RootElementProvider
|
1390
1447
|
}).config(function($provide) {
|
1391
1448
|
$provide.decorator('$timeout', function($delegate, $browser) {
|
1392
|
-
$delegate.flush = function() {
|
1393
|
-
$browser.defer.flush();
|
1449
|
+
$delegate.flush = function(delay) {
|
1450
|
+
$browser.defer.flush(delay);
|
1394
1451
|
};
|
1395
1452
|
return $delegate;
|
1396
1453
|
});
|
@@ -1448,7 +1505,7 @@ angular.module('ngMockE2E', ['ng']).config(function($provide) {
|
|
1448
1505
|
*
|
1449
1506
|
* // adds a new phone to the phones array
|
1450
1507
|
* $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
|
1451
|
-
* phones.push(angular.
|
1508
|
+
* phones.push(angular.fromJson(data));
|
1452
1509
|
* });
|
1453
1510
|
* $httpBackend.whenGET(/^\/templates\//).passThrough();
|
1454
1511
|
* //...
|
@@ -1473,11 +1530,11 @@ angular.module('ngMockE2E', ['ng']).config(function($provide) {
|
|
1473
1530
|
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
|
1474
1531
|
* control how a matched request is handled.
|
1475
1532
|
*
|
1476
|
-
* - respond
|
1477
|
-
*
|
1533
|
+
* - respond – `{function([status,] data[, headers])|function(function(method, url, data, headers)}`
|
1534
|
+
* – The respond method takes a set of static data to be returned or a function that can return
|
1478
1535
|
* an array containing response status (number), response data (string) and response headers
|
1479
1536
|
* (Object).
|
1480
|
-
* - passThrough
|
1537
|
+
* - passThrough – `{function()}` – Any request matching a backend definition with `passThrough`
|
1481
1538
|
* handler, will be pass through to the real backend (an XHR request will be made to the
|
1482
1539
|
* server.
|
1483
1540
|
*/
|
@@ -1593,22 +1650,6 @@ angular.mock.clearDataCache = function() {
|
|
1593
1650
|
};
|
1594
1651
|
|
1595
1652
|
|
1596
|
-
window.jstestdriver && (function(window) {
|
1597
|
-
/**
|
1598
|
-
* Global method to output any number of objects into JSTD console. Useful for debugging.
|
1599
|
-
*/
|
1600
|
-
window.dump = function() {
|
1601
|
-
var args = [];
|
1602
|
-
angular.forEach(arguments, function(arg) {
|
1603
|
-
args.push(angular.mock.dump(arg));
|
1604
|
-
});
|
1605
|
-
jstestdriver.console.log.apply(jstestdriver.console, args);
|
1606
|
-
if (window.console) {
|
1607
|
-
window.console.log.apply(window.console, args);
|
1608
|
-
}
|
1609
|
-
};
|
1610
|
-
})(window);
|
1611
|
-
|
1612
1653
|
|
1613
1654
|
window.jasmine && (function(window) {
|
1614
1655
|
|
@@ -1653,7 +1694,7 @@ window.jasmine && (function(window) {
|
|
1653
1694
|
* @name angular.mock.module
|
1654
1695
|
* @description
|
1655
1696
|
*
|
1656
|
-
* *NOTE*: This
|
1697
|
+
* *NOTE*: This function is also published on window for easy access.<br>
|
1657
1698
|
* *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
|
1658
1699
|
*
|
1659
1700
|
* This function registers a module configuration code. It collects the configuration information
|
@@ -1687,7 +1728,7 @@ window.jasmine && (function(window) {
|
|
1687
1728
|
* @name angular.mock.inject
|
1688
1729
|
* @description
|
1689
1730
|
*
|
1690
|
-
* *NOTE*: This
|
1731
|
+
* *NOTE*: This function is also published on window for easy access.<br>
|
1691
1732
|
* *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
|
1692
1733
|
*
|
1693
1734
|
* The inject function wraps a function into an injectable function. The inject() creates new
|
@@ -1753,7 +1794,7 @@ window.jasmine && (function(window) {
|
|
1753
1794
|
try {
|
1754
1795
|
injector.invoke(blockFns[i] || angular.noop, this);
|
1755
1796
|
} catch (e) {
|
1756
|
-
if(e.stack) e.stack += '\n' + errorForStack.stack;
|
1797
|
+
if(e.stack && errorForStack) e.stack += '\n' + errorForStack.stack;
|
1757
1798
|
throw e;
|
1758
1799
|
} finally {
|
1759
1800
|
errorForStack = null;
|
@@ -1761,4 +1802,4 @@ window.jasmine && (function(window) {
|
|
1761
1802
|
}
|
1762
1803
|
}
|
1763
1804
|
};
|
1764
|
-
})(window);
|
1805
|
+
})(window);
|