@@ -41,35 +41,39 @@ describe('runtime-dom: v-on directive', () => {
41
41
} )
42
42
43
43
test ( 'it should support key modifiers and system modifiers' , ( ) => {
44
- const el = document . createElement ( 'div' )
45
- const fn = jest . fn ( )
46
- // <div @keyup.ctrl.esc="test"/>
47
- const nextValue = withKeys ( withModifiers ( fn , [ 'ctrl' ] ) , [
48
- 'esc' ,
49
- 'arrow-left'
50
- ] )
51
- patchEvent ( el , 'onKeyup' , null , nextValue , null )
52
-
53
- triggerEvent ( el , 'keyup' , e => ( e . key = 'a' ) )
54
- expect ( fn ) . not . toBeCalled ( )
55
-
56
- triggerEvent ( el , 'keyup' , e => {
57
- e . ctrlKey = false
58
- e . key = 'esc'
59
- } )
60
- expect ( fn ) . not . toBeCalled ( )
44
+ const keyNames = [ "ctrl" , "shift" , "meta" , "alt" ]
61
45
62
- triggerEvent ( el , 'keyup' , e => {
63
- e . ctrlKey = true
64
- e . key = 'Escape'
65
- } )
66
- expect ( fn ) . toBeCalledTimes ( 1 )
67
-
68
- triggerEvent ( el , 'keyup' , e => {
69
- e . ctrlKey = true
70
- e . key = 'ArrowLeft'
71
- } )
72
- expect ( fn ) . toBeCalledTimes ( 2 )
46
+ keyNames . forEach ( keyName => {
47
+ const el = document . createElement ( 'div' )
48
+ const fn = jest . fn ( )
49
+ // <div @keyup[keyName].esc="test"/>
50
+ const nextValue = withKeys ( withModifiers ( fn , [ keyName ] ) , [
51
+ 'esc' ,
52
+ 'arrow-left'
53
+ ] )
54
+ patchEvent ( el , 'onKeyup' , null , nextValue , null )
55
+
56
+ triggerEvent ( el , 'keyup' , e => ( e . key = 'a' ) )
57
+ expect ( fn ) . not . toBeCalled ( )
58
+
59
+ triggerEvent ( el , 'keyup' , e => {
60
+ e [ `${ keyName } Key` ] = false
61
+ e . key = 'esc'
62
+ } )
63
+ expect ( fn ) . not . toBeCalled ( )
64
+
65
+ triggerEvent ( el , 'keyup' , e => {
66
+ e [ `${ keyName } Key` ] = true
67
+ e . key = 'Escape'
68
+ } )
69
+ expect ( fn ) . toBeCalledTimes ( 1 )
70
+
71
+ triggerEvent ( el , 'keyup' , e => {
72
+ e [ `${ keyName } Key` ] = true
73
+ e . key = 'ArrowLeft'
74
+ } )
75
+ expect ( fn ) . toBeCalledTimes ( 2 )
76
+ } ) ;
73
77
} )
74
78
75
79
test ( 'it should support "exact" modifier' , ( ) => {
0 commit comments