@@ -56,26 +56,41 @@ describeWithShallowAndMount('setChecked', mountingMethod => {
56
56
} )
57
57
58
58
it ( 'should trigger a change event when called on a checkbox' , ( ) => {
59
- const listeners = { change : sinon . spy ( ) }
60
-
61
- mountingMethod (
62
- { template : `<input type="checkbox" v-on="$listeners">` } ,
63
- { listeners } ,
64
- ) . setChecked ( )
65
-
66
- expect ( listeners . change ) . to . have . been . called
67
- } ) ;
59
+ const listener = sinon . spy ( )
60
+
61
+ mountingMethod ( {
62
+ // For compatibility with earlier versions of Vue that use the `click`
63
+ // event for updating `v-model`.
64
+ template : `
65
+ <input
66
+ type="checkbox"
67
+ @change="listener"
68
+ @click="listener"
69
+ >
70
+ ` ,
71
+ methods : { listener } ,
72
+ } ) . setChecked ( )
73
+
74
+ expect ( listener ) . to . have . been . called
75
+ } )
68
76
69
77
it ( 'should not trigger a change event if the checkbox is already checked' , ( ) => {
70
- const listeners = { change : sinon . spy ( ) }
71
-
72
- mountingMethod (
73
- { template : `<input type="checkbox" checked v-on="$listeners">` } ,
74
- { listeners } ,
75
- ) . setChecked ( )
76
-
77
- expect ( listeners . change ) . not . to . have . been . called
78
- } ) ;
78
+ const listener = sinon . spy ( )
79
+
80
+ mountingMethod ( {
81
+ template : `
82
+ <input
83
+ type="checkbox"
84
+ checked
85
+ @change="listener"
86
+ @click="listener"
87
+ >
88
+ ` ,
89
+ methods : { listener } ,
90
+ } ) . setChecked ( )
91
+
92
+ expect ( listener ) . not . to . have . been . called
93
+ } )
79
94
80
95
it ( 'updates dom with radio v-model' , async ( ) => {
81
96
const wrapper = mountingMethod ( ComponentWithInput )
@@ -112,26 +127,39 @@ describeWithShallowAndMount('setChecked', mountingMethod => {
112
127
} )
113
128
114
129
it ( 'should trigger a change event when called on a radio button' , ( ) => {
115
- const listeners = { change : sinon . spy ( ) }
116
-
117
- mountingMethod (
118
- { template : `<input type="radio" v-on="$listeners">` } ,
119
- { listeners } ,
120
- ) . setChecked ( )
121
-
122
- expect ( listeners . change ) . to . have . been . called
123
- } ) ;
124
-
125
- it ( 'should not trigger a change event if the radio button is already selected' , ( ) => {
126
- const listeners = { change : sinon . spy ( ) }
127
-
128
- mountingMethod (
129
- { template : `<input type="radio" checked v-on="$listeners">` } ,
130
- { listeners } ,
131
- ) . setChecked ( )
130
+ const listener = sinon . spy ( )
131
+
132
+ mountingMethod ( {
133
+ template : `
134
+ <input
135
+ type="radio"
136
+ @change="listener"
137
+ @click="listener"
138
+ >
139
+ ` ,
140
+ methods : { listener } ,
141
+ } ) . setChecked ( )
142
+
143
+ expect ( listener ) . to . have . been . called
144
+ } )
132
145
133
- expect ( listeners . change ) . not . to . have . been . called
134
- } ) ;
146
+ it ( 'should not trigger a change event if the radio button is already checked' , ( ) => {
147
+ const listener = sinon . spy ( )
148
+
149
+ mountingMethod ( {
150
+ template : `
151
+ <input
152
+ type="radio"
153
+ checked
154
+ @change="listener"
155
+ @click="listener"
156
+ >
157
+ ` ,
158
+ methods : { listener } ,
159
+ } ) . setChecked ( )
160
+
161
+ expect ( listener ) . not . to . have . been . called
162
+ } )
135
163
136
164
it ( 'throws error if checked param is not boolean' , ( ) => {
137
165
const message = 'wrapper.setChecked() must be passed a boolean'
0 commit comments