1
1
var _ = require ( '../../../../src/util' )
2
+ var Vue = _ . Vue
2
3
var def = require ( '../../../../src/directives/transition' )
3
4
4
5
if ( _ . inBrowser ) {
@@ -10,6 +11,7 @@ if (_.inBrowser) {
10
11
el : document . createElement ( 'div' ) ,
11
12
expression : 'test' ,
12
13
bind : def . bind ,
14
+ update : def . update ,
13
15
vm : {
14
16
$options : {
15
17
transitions : {
@@ -23,5 +25,74 @@ if (_.inBrowser) {
23
25
expect ( dir . el . __v_trans . fns ) . toBe ( fns )
24
26
} )
25
27
28
+ it ( 'dynamic transitions' , function ( done ) {
29
+ var el = document . createElement ( 'div' )
30
+ document . body . appendChild ( el )
31
+ var calls = {
32
+ a : { enter : 0 , leave : 0 } ,
33
+ b : { enter : 0 , leave : 0 }
34
+ }
35
+ var vm = new Vue ( {
36
+ el : el ,
37
+ template : '<div v-show="show" v-transition="{{trans}}"></div>' ,
38
+ data : {
39
+ show : true ,
40
+ trans : 'a'
41
+ } ,
42
+ transitions : {
43
+ a : {
44
+ enter : function ( el , done ) {
45
+ calls . a . enter ++
46
+ done ( )
47
+ } ,
48
+ leave : function ( el , done ) {
49
+ calls . a . leave ++
50
+ done ( )
51
+ }
52
+ } ,
53
+ b : {
54
+ enter : function ( el , done ) {
55
+ calls . b . enter ++
56
+ done ( )
57
+ } ,
58
+ leave : function ( el , done ) {
59
+ calls . b . leave ++
60
+ done ( )
61
+ }
62
+ }
63
+ }
64
+ } )
65
+
66
+ assertCalls ( 0 , 0 , 0 , 0 )
67
+ vm . show = false
68
+ _ . nextTick ( function ( ) {
69
+ assertCalls ( 0 , 1 , 0 , 0 )
70
+ vm . trans = 'b'
71
+ vm . show = true
72
+ _ . nextTick ( function ( ) {
73
+ assertCalls ( 0 , 1 , 1 , 0 )
74
+ vm . show = false
75
+ _ . nextTick ( function ( ) {
76
+ assertCalls ( 0 , 1 , 1 , 1 )
77
+ vm . trans = 'a'
78
+ vm . show = true
79
+ _ . nextTick ( function ( ) {
80
+ assertCalls ( 1 , 1 , 1 , 1 )
81
+ done ( )
82
+ } )
83
+ } )
84
+ } )
85
+ } )
86
+
87
+ function assertCalls ( a , b , c , d ) {
88
+ expect ( el . firstChild . style . display ) . toBe ( vm . show ? '' : 'none' )
89
+ expect ( calls . a . enter ) . toBe ( a )
90
+ expect ( calls . a . leave ) . toBe ( b )
91
+ expect ( calls . b . enter ) . toBe ( c )
92
+ expect ( calls . b . leave ) . toBe ( d )
93
+ }
94
+
95
+ } )
96
+
26
97
} )
27
98
}
0 commit comments