diff --git a/packages/runtime-dom/__tests__/directives/vOn.spec.ts b/packages/runtime-dom/__tests__/directives/vOn.spec.ts index a08c85af9..e2417d956 100644 --- a/packages/runtime-dom/__tests__/directives/vOn.spec.ts +++ b/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() - //
- const nextValue = withKeys(withModifiers(fn, ['ctrl']), [ - 'esc', - 'arrow-left' - ]) - patchEvent(el, 'onKeyup', null, nextValue, null) + const keyNames = ["ctrl","shift","meta","alt"] - 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() - - 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() + //
+ 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', () => {