@@ -167,56 +167,62 @@ if (!isIE9) {
167
167
} )
168
168
169
169
it ( 'transition with JavaScript hooks' , done => {
170
+ const onLeaveSpy = jasmine . createSpy ( 'onLeave' )
171
+ const onEnterSpy = jasmine . createSpy ( 'onEnter' )
170
172
const beforeLeaveSpy = jasmine . createSpy ( 'beforeLeave' )
171
173
const beforeEnterSpy = jasmine . createSpy ( 'beforeEnter' )
172
- const hooks = {
173
- beforeLeave : el => {
174
- expect ( el ) . toBe ( vm . $el . children [ 0 ] )
175
- expect ( el . className ) . toBe ( 'test' )
176
- beforeLeaveSpy ( )
177
- } ,
178
- onLeave : jasmine . createSpy ( 'leave' ) ,
179
- afterLeave : jasmine . createSpy ( 'afterLeave' ) ,
180
- beforeEnter : el => {
181
- expect ( vm . $el . contains ( el ) ) . toBe ( false )
182
- expect ( el . className ) . toBe ( 'test' )
183
- beforeEnterSpy ( )
184
- } ,
185
- onEnter : jasmine . createSpy ( 'enter' ) ,
186
- afterEnter : jasmine . createSpy ( 'afterEnter' )
187
- }
174
+ const afterLeaveSpy = jasmine . createSpy ( 'afterLeave' )
175
+ const afterEnterSpy = jasmine . createSpy ( 'afterEnter' )
188
176
189
177
const vm = new Vue ( {
190
178
template : '<div><div v-if="ok" class="test" transition="test">foo</div></div>' ,
191
179
data : { ok : true } ,
192
180
transitions : {
193
- test : hooks
181
+ test : {
182
+ beforeLeave : ( el , vm ) => {
183
+ expect ( el ) . toBe ( vm . $el . children [ 0 ] )
184
+ expect ( el . className ) . toBe ( 'test' )
185
+ beforeLeaveSpy ( el , vm )
186
+ } ,
187
+ onLeave : ( el , vm ) => onLeaveSpy ( el , vm ) ,
188
+ afterLeave : ( el , vm ) => afterLeaveSpy ( el , vm ) ,
189
+ beforeEnter : ( el , vm ) => {
190
+ expect ( vm . $el . contains ( el ) ) . toBe ( false )
191
+ expect ( el . className ) . toBe ( 'test' )
192
+ beforeEnterSpy ( el , vm )
193
+ } ,
194
+ onEnter : ( el , vm ) => onEnterSpy ( el , vm ) ,
195
+ afterEnter : ( el , vm ) => afterEnterSpy ( el , vm )
196
+ }
194
197
}
195
198
} ) . $mount ( el )
196
199
197
200
// should not apply transition on initial render by default
198
201
expect ( vm . $el . innerHTML ) . toBe ( '<div class="test">foo</div>' )
202
+
203
+ let _el = vm . $el . children [ 0 ]
199
204
vm . ok = false
200
205
waitForUpdate ( ( ) => {
201
- expect ( beforeLeaveSpy ) . toHaveBeenCalled ( )
202
- expect ( hooks . onLeave ) . toHaveBeenCalled ( )
206
+ expect ( beforeLeaveSpy ) . toHaveBeenCalledWith ( _el , vm )
207
+ expect ( onLeaveSpy ) . toHaveBeenCalledWith ( _el , vm )
203
208
expect ( vm . $el . children [ 0 ] . className ) . toBe ( 'test test-leave test-leave-active' )
204
209
} ) . thenWaitFor ( nextFrame ) . then ( ( ) => {
205
- expect ( hooks . afterLeave ) . not . toHaveBeenCalled ( )
210
+ expect ( afterLeaveSpy ) . not . toHaveBeenCalled ( )
206
211
expect ( vm . $el . children [ 0 ] . className ) . toBe ( 'test test-leave-active' )
207
212
} ) . thenWaitFor ( duration + 10 ) . then ( ( ) => {
208
- expect ( hooks . afterLeave ) . toHaveBeenCalled ( )
213
+ expect ( afterLeaveSpy ) . toHaveBeenCalledWith ( _el , vm )
209
214
expect ( vm . $el . children . length ) . toBe ( 0 )
210
215
vm . ok = true
211
216
} ) . then ( ( ) => {
212
- expect ( beforeEnterSpy ) . toHaveBeenCalled ( )
213
- expect ( hooks . onEnter ) . toHaveBeenCalled ( )
217
+ _el = vm . $el . children [ 0 ]
218
+ expect ( beforeEnterSpy ) . toHaveBeenCalledWith ( _el , vm )
219
+ expect ( onEnterSpy ) . toHaveBeenCalledWith ( _el , vm )
214
220
expect ( vm . $el . children [ 0 ] . className ) . toBe ( 'test test-enter test-enter-active' )
215
221
} ) . thenWaitFor ( nextFrame ) . then ( ( ) => {
216
- expect ( hooks . afterEnter ) . not . toHaveBeenCalled ( )
222
+ expect ( afterEnterSpy ) . not . toHaveBeenCalled ( )
217
223
expect ( vm . $el . children [ 0 ] . className ) . toBe ( 'test test-enter-active' )
218
224
} ) . thenWaitFor ( duration + 10 ) . then ( ( ) => {
219
- expect ( hooks . afterEnter ) . toHaveBeenCalled ( )
225
+ expect ( afterEnterSpy ) . toHaveBeenCalledWith ( _el , vm )
220
226
expect ( vm . $el . children [ 0 ] . className ) . toBe ( 'test' )
221
227
} ) . then ( done )
222
228
} )
@@ -228,10 +234,10 @@ if (!isIE9) {
228
234
data : { ok : true } ,
229
235
transitions : {
230
236
test : {
231
- onEnter : ( el , cb ) => {
237
+ onEnter : ( el , vm , cb ) => {
232
238
next = cb
233
239
} ,
234
- onLeave : ( el , cb ) => {
240
+ onLeave : ( el , vm , cb ) => {
235
241
next = cb
236
242
}
237
243
}
0 commit comments