|
1 | 1 | 'use strict';
|
2 | 2 |
|
3 |
| -describe('$route', function() { |
| 3 | +fdescribe('$route', function() { |
4 | 4 | var $httpBackend,
|
5 | 5 | element;
|
6 | 6 |
|
@@ -1061,6 +1061,55 @@ describe('$route', function() {
|
1061 | 1061 | .toEqual(['http://server/#!/bar/id3?extra=eId', true, null]);
|
1062 | 1062 | });
|
1063 | 1063 | });
|
| 1064 | + |
| 1065 | + it('should not instantiate controller or process template for a redirected route', function() { |
| 1066 | + var firstController = jasmine.createSpy('first controller spy'); |
| 1067 | + var firstTemplate = jasmine.createSpy('first template spy').and.returnValue('redirected view'); |
| 1068 | + var secondController = jasmine.createSpy('second controller spy'); |
| 1069 | + var secondTemplate = jasmine.createSpy('second template spy').and.returnValue('redirected view'); |
| 1070 | + module(function($routeProvider) { |
| 1071 | + $routeProvider.when('/redirect', { |
| 1072 | + template: firstTemplate, |
| 1073 | + redirectTo: '/redirected', |
| 1074 | + controller: firstController |
| 1075 | + }); |
| 1076 | + $routeProvider.when('/redirected', { |
| 1077 | + template: secondTemplate, |
| 1078 | + controller: secondController |
| 1079 | + }); |
| 1080 | + }); |
| 1081 | + inject(function($route, $location, $rootScope, $compile) { |
| 1082 | + var element = $compile('<div><ng-view></ng-view></div>')($rootScope); |
| 1083 | + $location.path('/redirect'); |
| 1084 | + $rootScope.$digest(); |
| 1085 | + expect(firstController).not.toHaveBeenCalled(); |
| 1086 | + expect(firstTemplate).not.toHaveBeenCalled(); |
| 1087 | + expect(secondController).toHaveBeenCalled(); |
| 1088 | + expect(secondTemplate).toHaveBeenCalled(); |
| 1089 | + dealoc(element); |
| 1090 | + }); |
| 1091 | + }); |
| 1092 | + |
| 1093 | + it('should not redirect transition if `redirectTo` returns `undefined`', function() { |
| 1094 | + var controller = jasmine.createSpy('first controller spy'); |
| 1095 | + var templateFn = jasmine.createSpy('first template spy').and.returnValue('redirected view'); |
| 1096 | + module(function($routeProvider) { |
| 1097 | + $routeProvider.when('/redirect/to/undefined', { |
| 1098 | + template: templateFn, |
| 1099 | + redirectTo: function() {}, |
| 1100 | + controller: controller |
| 1101 | + }); |
| 1102 | + }); |
| 1103 | + inject(function($route, $location, $rootScope, $compile) { |
| 1104 | + var element = $compile('<div><ng-view></ng-view></div>')($rootScope); |
| 1105 | + $location.path('/redirect/to/undefined'); |
| 1106 | + $rootScope.$digest(); |
| 1107 | + expect(controller).toHaveBeenCalled(); |
| 1108 | + expect(templateFn).toHaveBeenCalled(); |
| 1109 | + expect($location.path()).toEqual('/redirect/to/undefined'); |
| 1110 | + dealoc(element); |
| 1111 | + }); |
| 1112 | + }); |
1064 | 1113 | });
|
1065 | 1114 |
|
1066 | 1115 |
|
|
0 commit comments