@@ -15,7 +15,11 @@ describe('uiView', function () {
1515
1616 var scope , $compile , elem ;
1717
18- beforeEach ( module ( 'ui.router' ) ) ;
18+ beforeEach ( function ( ) {
19+ angular . module ( 'ui.router.test' , [ 'ui.router' , 'ngAnimate' ] ) ;
20+ module ( 'ui.router.test' ) ;
21+ module ( 'mock.animate' ) ;
22+ } ) ;
1923
2024 beforeEach ( module ( function ( $provide ) {
2125 $provide . decorator ( '$uiViewScroll' , function ( $delegate ) {
@@ -96,60 +100,72 @@ describe('uiView', function () {
96100 } ) ) ;
97101
98102 describe ( 'linking ui-directive' , function ( ) {
99- it ( 'anonymous ui-view should be replaced with the template of the current $state' , inject ( function ( $state , $q ) {
103+ it ( 'anonymous ui-view should be replaced with the template of the current $state' , inject ( function ( $state , $q , $animate ) {
100104 elem . append ( $compile ( '<div ui-view></div>' ) ( scope ) ) ;
101105
102106 $state . transitionTo ( aState ) ;
103107 $q . flush ( ) ;
104108
105- expect ( elem . text ( ) ) . toBe ( aState . template ) ;
109+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( '' ) ;
110+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( aState . template ) ;
106111 } ) ) ;
107112
108- it ( 'named ui-view should be replaced with the template of the current $state' , inject ( function ( $state , $q ) {
113+ it ( 'named ui-view should be replaced with the template of the current $state' , inject ( function ( $state , $q , $animate ) {
109114 elem . append ( $compile ( '<div ui-view="cview"></div>' ) ( scope ) ) ;
110115
111116 $state . transitionTo ( cState ) ;
112117 $q . flush ( ) ;
113118
114- expect ( elem . text ( ) ) . toBe ( cState . views . cview . template ) ;
119+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( '' ) ;
120+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( cState . views . cview . template ) ;
115121 } ) ) ;
116122
117- it ( 'ui-view should be updated after transition to another state' , inject ( function ( $state , $q ) {
123+ it ( 'ui-view should be updated after transition to another state' , inject ( function ( $state , $q , $animate ) {
118124 elem . append ( $compile ( '<div ui-view></div>' ) ( scope ) ) ;
119125
120126 $state . transitionTo ( aState ) ;
121127 $q . flush ( ) ;
122128
123- expect ( elem . text ( ) ) . toBe ( aState . template ) ;
129+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( '' ) ;
130+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( aState . template ) ;
124131
125132 $state . transitionTo ( bState ) ;
126133 $q . flush ( ) ;
127134
128- expect ( elem . text ( ) ) . toBe ( bState . template ) ;
135+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( aState . template ) ;
136+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( bState . template ) ;
129137 } ) ) ;
130138
131- it ( 'should handle NOT nested ui-views' , inject ( function ( $state , $q ) {
139+ it ( 'should handle NOT nested ui-views' , inject ( function ( $state , $q , $animate ) {
132140 elem . append ( $compile ( '<div ui-view="dview1" class="dview1"></div><div ui-view="dview2" class="dview2"></div>' ) ( scope ) ) ;
133141
134142 $state . transitionTo ( dState ) ;
135143 $q . flush ( ) ;
136144
137- expect ( innerText ( elem [ 0 ] . querySelector ( '.dview1' ) ) ) . toBe ( dState . views . dview1 . template ) ;
138- expect ( innerText ( elem [ 0 ] . querySelector ( '.dview2' ) ) ) . toBe ( dState . views . dview2 . template ) ;
145+ // expect(innerText(elem[0].querySelector('.dview1'))).toBe(dState.views.dview1.template);
146+ // expect(innerText(elem[0].querySelector('.dview2'))).toBe(dState.views.dview2.template);
147+
148+ expect ( $animate . flushNext ( 'leave' ) . element . html ( ) ) . toBeUndefined ( ) ;
149+ expect ( $animate . flushNext ( 'enter' ) . element . html ( ) ) . toBe ( dState . views . dview1 . template ) ;
150+ expect ( $animate . flushNext ( 'leave' ) . element . html ( ) ) . toBeUndefined ( ) ;
151+ expect ( $animate . flushNext ( 'enter' ) . element . html ( ) ) . toBe ( dState . views . dview2 . template ) ;
139152 } ) ) ;
140153
141- it ( 'should handle nested ui-views (testing two levels deep)' , inject ( function ( $state , $q ) {
154+ it ( 'should handle nested ui-views (testing two levels deep)' , inject ( function ( $state , $q , $animate ) {
142155 elem . append ( $compile ( '<div ui-view class="view"></div>' ) ( scope ) ) ;
143156
144157 $state . transitionTo ( fState ) ;
145158 $q . flush ( ) ;
146159
147- expect ( innerText ( elem [ 0 ] . querySelector ( '.view' ) . querySelector ( '.eview' ) ) ) . toBe ( fState . views . eview . template ) ;
160+ // expect(innerText(elem[0].querySelector('.view').querySelector('.eview'))).toBe(fState.views.eview.template);
161+
162+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( '' ) ;
163+ expect ( $animate . flushNext ( 'enter' ) . element . parent ( ) . parent ( ) [ 0 ] . querySelector ( '.view' ) . querySelector ( '.eview' ) . innerText ) . toBe ( fState . views . eview . template ) ;
148164 } ) ) ;
149165 } ) ;
150166
151167 describe ( 'handling initial view' , function ( ) {
152- it ( 'initial view should be compiled if the view is empty' , inject ( function ( $state , $q ) {
168+ it ( 'initial view should be compiled if the view is empty' , inject ( function ( $state , $q , $animate ) {
153169 var content = 'inner content' ;
154170
155171 elem . append ( $compile ( '<div ui-view></div>' ) ( scope ) ) ;
@@ -158,10 +174,16 @@ describe('uiView', function () {
158174 $state . transitionTo ( gState ) ;
159175 $q . flush ( ) ;
160176
161- expect ( innerText ( elem [ 0 ] . querySelector ( '.test' ) ) ) . toBe ( content ) ;
177+ // expect(innerText(elem[0].querySelector('.test'))).toBe(content);
178+
179+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( "" ) ;
180+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( content ) ;
181+
182+ // For some reason the ng-class expression is no longer evaluated
183+ expect ( $animate . flushNext ( 'addClass' ) . element . parent ( ) [ 0 ] . querySelector ( '.test' ) . innerText ) . toBe ( content ) ;
162184 } ) ) ;
163185
164- it ( 'initial view should be put back after removal of the view' , inject ( function ( $state , $q ) {
186+ it ( 'initial view should be put back after removal of the view' , inject ( function ( $state , $q , $animate ) {
165187 var content = 'inner content' ;
166188
167189 elem . append ( $compile ( '<div ui-view></div>' ) ( scope ) ) ;
@@ -170,13 +192,20 @@ describe('uiView', function () {
170192 $state . transitionTo ( hState ) ;
171193 $q . flush ( ) ;
172194
173- expect ( elem . text ( ) ) . toBe ( hState . views . inner . template ) ;
195+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( '' ) ;
196+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( hState . views . inner . template ) ;
197+
198+ expect ( $animate . flushNext ( 'addClass' ) . element . text ( ) ) . toBe ( hState . views . inner . template ) ;
199+ expect ( $animate . flushNext ( 'addClass' ) . element . text ( ) ) . toBe ( hState . views . inner . template ) ;
174200
175201 // going to the parent state which makes the inner view empty
176202 $state . transitionTo ( gState ) ;
177203 $q . flush ( ) ;
178204
179- expect ( innerText ( elem [ 0 ] . querySelector ( '.test' ) ) ) . toBe ( content ) ;
205+ // expect(innerText(elem[0].querySelector('.test'))).toBe(content);
206+
207+ expect ( $animate . flushNext ( 'leave' ) . element . text ( ) ) . toBe ( hState . views . inner . template ) ;
208+ expect ( $animate . flushNext ( 'enter' ) . element . text ( ) ) . toBe ( content ) ;
180209 } ) ) ;
181210
182211 // related to issue #435
0 commit comments