Просмотр исходного кода

test(runtime-dom): improve v-on system key modifiers test (#1597)

motao 6 лет назад
Родитель
Сommit
b8db7ab889
1 измененных файлов с 32 добавлено и 28 удалено
  1. 32 28
      packages/runtime-dom/__tests__/directives/vOn.spec.ts

+ 32 - 28
packages/runtime-dom/__tests__/directives/vOn.spec.ts

@@ -41,35 +41,39 @@ describe('runtime-dom: v-on directive', () => {
   })
 
   test('it should support key modifiers and system modifiers', () => {
-    const el = document.createElement('div')
-    const fn = jest.fn()
-    // <div @keyup.ctrl.esc="test"/>
-    const nextValue = withKeys(withModifiers(fn, ['ctrl']), [
-      'esc',
-      'arrow-left'
-    ])
-    patchEvent(el, 'onKeyup', null, nextValue, null)
-
-    triggerEvent(el, 'keyup', e => (e.key = 'a'))
-    expect(fn).not.toBeCalled()
-
-    triggerEvent(el, 'keyup', e => {
-      e.ctrlKey = false
-      e.key = 'esc'
-    })
-    expect(fn).not.toBeCalled()
+    const keyNames = ["ctrl","shift","meta","alt"]
 
-    triggerEvent(el, 'keyup', e => {
-      e.ctrlKey = true
-      e.key = 'Escape'
-    })
-    expect(fn).toBeCalledTimes(1)
-
-    triggerEvent(el, 'keyup', e => {
-      e.ctrlKey = true
-      e.key = 'ArrowLeft'
-    })
-    expect(fn).toBeCalledTimes(2)
+    keyNames.forEach(keyName=>{
+      const el = document.createElement('div')
+      const fn = jest.fn()
+      // <div @keyup[keyName].esc="test"/>
+      const nextValue = withKeys(withModifiers(fn, [keyName]), [
+        'esc',
+        'arrow-left'
+      ])
+      patchEvent(el, 'onKeyup', null, nextValue, null)
+  
+      triggerEvent(el, 'keyup', e => (e.key = 'a'))
+      expect(fn).not.toBeCalled()
+  
+      triggerEvent(el, 'keyup', e => {
+        e[`${keyName}Key`] = false
+        e.key = 'esc'
+      })
+      expect(fn).not.toBeCalled()
+  
+      triggerEvent(el, 'keyup', e => {
+        e[`${keyName}Key`] = true
+        e.key = 'Escape'
+      })
+      expect(fn).toBeCalledTimes(1)
+  
+      triggerEvent(el, 'keyup', e => {
+        e[`${keyName}Key`] = true
+        e.key = 'ArrowLeft'
+      })
+      expect(fn).toBeCalledTimes(2)
+    });
   })
 
   test('it should support "exact" modifier', () => {