@@ -212,6 +212,49 @@ describe('Directive v-on', () => {
212212 expect ( spy ) . toHaveBeenCalled ( )
213213 } )
214214
215+ it ( 'should support mouse modifier' , ( ) => {
216+ const left = 0
217+ const middle = 1
218+ const right = 2
219+ const spyLeft = jasmine . createSpy ( )
220+ const spyMiddle = jasmine . createSpy ( )
221+ const spyRight = jasmine . createSpy ( )
222+
223+ vm = new Vue ( {
224+ el,
225+ template : `
226+ <div>
227+ <div ref="left" @mousedown.left="foo">left</div>
228+ <div ref="right" @mousedown.right="foo1">right</div>
229+ <div ref="middle" @mousedown.middle="foo2">right</div>
230+ </div>
231+ ` ,
232+ methods : {
233+ foo : spyLeft ,
234+ foo1 : spyRight ,
235+ foo2 : spyMiddle
236+ }
237+ } )
238+
239+ triggerEvent ( vm . $refs . left , 'mousedown' , e => { e . button = right } )
240+ triggerEvent ( vm . $refs . left , 'mousedown' , e => { e . button = middle } )
241+ expect ( spyLeft ) . not . toHaveBeenCalled ( )
242+ triggerEvent ( vm . $refs . left , 'mousedown' , e => { e . button = left } )
243+ expect ( spyLeft ) . toHaveBeenCalled ( )
244+
245+ triggerEvent ( vm . $refs . right , 'mousedown' , e => { e . button = left } )
246+ triggerEvent ( vm . $refs . right , 'mousedown' , e => { e . button = middle } )
247+ expect ( spyRight ) . not . toHaveBeenCalled ( )
248+ triggerEvent ( vm . $refs . right , 'mousedown' , e => { e . button = right } )
249+ expect ( spyRight ) . toHaveBeenCalled ( )
250+
251+ triggerEvent ( vm . $refs . middle , 'mousedown' , e => { e . button = left } )
252+ triggerEvent ( vm . $refs . middle , 'mousedown' , e => { e . button = right } )
253+ expect ( spyMiddle ) . not . toHaveBeenCalled ( )
254+ triggerEvent ( vm . $refs . middle , 'mousedown' , e => { e . button = middle } )
255+ expect ( spyMiddle ) . toHaveBeenCalled ( )
256+ } )
257+
215258 it ( 'should support custom keyCode' , ( ) => {
216259 Vue . config . keyCodes . test = 1
217260 vm = new Vue ( {
0 commit comments