@@ -50,6 +50,48 @@ describe('trigger', () => {
50
50
expect ( wrapper . find ( 'p' ) . text ( ) ) . toBe ( 'Count: 1' )
51
51
} )
52
52
53
+ it ( 'works with right modifier' , async ( ) => {
54
+ const handler = jest . fn ( )
55
+ const Component = {
56
+ template : '<div @click.right="handler"/>' ,
57
+ methods : { handler }
58
+ }
59
+ const wrapper = mount ( Component )
60
+ await wrapper . trigger ( 'click.right' )
61
+
62
+ expect ( handler ) . toHaveBeenCalledTimes ( 1 )
63
+ expect ( handler . mock . calls [ 0 ] [ 0 ] . type ) . toBe ( 'contextmenu' )
64
+ expect ( handler . mock . calls [ 0 ] [ 0 ] . button ) . toBe ( 2 )
65
+ } )
66
+
67
+ it ( 'works with middle modifier' , async ( ) => {
68
+ const handler = jest . fn ( )
69
+ const Component = {
70
+ template : '<div @click.middle="handler"/>' ,
71
+ methods : { handler }
72
+ }
73
+ const wrapper = mount ( Component )
74
+ await wrapper . trigger ( 'click.middle' )
75
+
76
+ expect ( handler ) . toHaveBeenCalledTimes ( 1 )
77
+ expect ( handler . mock . calls [ 0 ] [ 0 ] . button ) . toBe ( 1 )
78
+ expect ( handler . mock . calls [ 0 ] [ 0 ] . type ) . toBe ( 'mouseup' )
79
+ } )
80
+
81
+ it ( 'works with meta and key modifiers' , async ( ) => {
82
+ const handler = jest . fn ( )
83
+ const Component = {
84
+ template : '<div @click.meta.right="handler"/>' ,
85
+ methods : { handler }
86
+ }
87
+ const wrapper = mount ( Component )
88
+ await wrapper . trigger ( 'click.meta.right' )
89
+
90
+ expect ( handler ) . toHaveBeenCalledTimes ( 1 )
91
+ expect ( handler . mock . calls [ 0 ] [ 0 ] . metaKey ) . toBe ( true )
92
+ expect ( handler . mock . calls [ 0 ] [ 0 ] . button ) . toBe ( 2 )
93
+ } )
94
+
53
95
it ( 'causes DOM to update after a click handler method that changes components data is called' , async ( ) => {
54
96
const Component = defineComponent ( {
55
97
setup ( ) {
@@ -105,7 +147,7 @@ describe('trigger', () => {
105
147
template : '<input @keydown.enter="keydownHandler" />' ,
106
148
methods : { keydownHandler }
107
149
}
108
- const wrapper = mount ( Component , { } )
150
+ const wrapper = mount ( Component )
109
151
110
152
// is not called when key is not 'enter'
111
153
await wrapper . trigger ( 'keydown' , { key : 'Backspace' } )
@@ -115,6 +157,10 @@ describe('trigger', () => {
115
157
await wrapper . trigger ( 'keydown' , { key : 'ENTER' } )
116
158
expect ( keydownHandler ) . not . toHaveBeenCalled ( )
117
159
160
+ // is not called if passed keyCode instead
161
+ await wrapper . trigger ( 'keydown' , { keyCode : 13 } )
162
+ expect ( keydownHandler ) . not . toHaveBeenCalled ( )
163
+
118
164
// is called when key is lowercase 'enter'
119
165
await wrapper . trigger ( 'keydown' , { key : 'enter' } )
120
166
expect ( keydownHandler ) . toHaveBeenCalledTimes ( 1 )
@@ -124,9 +170,47 @@ describe('trigger', () => {
124
170
await wrapper . trigger ( 'keydown' , { key : 'Enter' } )
125
171
expect ( keydownHandler ) . toHaveBeenCalledTimes ( 2 )
126
172
expect ( keydownHandler . mock . calls [ 1 ] [ 0 ] . key ) . toBe ( 'Enter' )
173
+
174
+ await wrapper . trigger ( 'keydown.enter' )
175
+ expect ( keydownHandler ) . toHaveBeenCalledTimes ( 3 )
176
+ expect ( keydownHandler . mock . calls [ 2 ] [ 0 ] . key ) . toBe ( 'enter' )
177
+ } )
178
+
179
+ it ( 'overwrites key if passed as a modifier' , async ( ) => {
180
+ const keydownHandler = jest . fn ( )
181
+ const Component = {
182
+ template : '<input @keydown.enter="keydownHandler" />' ,
183
+ methods : { keydownHandler }
184
+ }
185
+ const wrapper = mount ( Component )
186
+
187
+ // is called when key is lowercase 'enter'
188
+ await wrapper . trigger ( 'keydown.enter' , { key : 'up' } )
189
+ expect ( keydownHandler ) . toHaveBeenCalledTimes ( 1 )
190
+ expect ( keydownHandler . mock . calls [ 0 ] [ 0 ] . key ) . toBe ( 'enter' )
191
+ expect ( keydownHandler . mock . calls [ 0 ] [ 0 ] . keyCode ) . toBe ( 13 )
192
+ } )
193
+
194
+ it ( 'causes keydown handler to fire with multiple modifiers' , async ( ) => {
195
+ const keydownHandler = jest . fn ( )
196
+ const Component = {
197
+ template : '<input @keydown.ctrl.shift.left="keydownHandler" />' ,
198
+ methods : { keydownHandler }
199
+ }
200
+ const wrapper = mount ( Component )
201
+
202
+ await wrapper . trigger ( 'keydown.ctrl.shift.left' )
203
+
204
+ expect ( keydownHandler ) . toHaveBeenCalledTimes ( 1 )
205
+
206
+ let event = keydownHandler . mock . calls [ 0 ] [ 0 ]
207
+ expect ( event . key ) . toBe ( 'left' )
208
+ expect ( event . shiftKey ) . toBe ( true )
209
+ expect ( event . ctrlKey ) . toBe ( true )
210
+ expect ( event . ctrlKey ) . toBe ( true )
127
211
} )
128
212
129
- it ( 'causes keydown handler to fire with the appropiate keyCode when wrapper.trigger("keydown", { keyCode: 65 }) is fired' , async ( ) => {
213
+ it ( 'causes keydown handler to fire with the appropriate keyCode when wrapper.trigger("keydown", { keyCode: 65 }) is fired' , async ( ) => {
130
214
const keydownHandler = jest . fn ( )
131
215
const Component = {
132
216
template : '<input @keydown="keydownHandler" />' ,
@@ -139,7 +223,7 @@ describe('trigger', () => {
139
223
expect ( keydownHandler . mock . calls [ 0 ] [ 0 ] . keyCode ) . toBe ( 65 )
140
224
} )
141
225
142
- it ( 'causes keydown handler to fire converting keyName in an apropiate keyCode when wrapper.trigger("keydown.${keyName}") is fired' , async ( ) => {
226
+ it ( 'causes keydown handler to fire converting keyName in an appropriate keyCode when wrapper.trigger("keydown.${keyName}") is fired' , async ( ) => {
143
227
let keydownHandler = jest . fn ( )
144
228
145
229
const Component = {
0 commit comments