|
|
@@ -135,4 +135,32 @@ describe('runtime-dom: v-on directive', () => {
|
|
|
handler(event, 'value', true)
|
|
|
expect(fn).toBeCalledWith(event, 'value', true)
|
|
|
})
|
|
|
+
|
|
|
+ it('withKeys cache wrapped listener separately for different modifiers', () => {
|
|
|
+ const el1 = document.createElement('button')
|
|
|
+ const el2 = document.createElement('button')
|
|
|
+ const fn = vi.fn()
|
|
|
+ const handler1 = withKeys(fn, ['a'])
|
|
|
+ const handler2 = withKeys(fn, ['b'])
|
|
|
+ expect(handler1 === handler2).toBe(false)
|
|
|
+ patchEvent(el1, 'onKeyup', null, handler1, null)
|
|
|
+ patchEvent(el2, 'onKeyup', null, handler2, null)
|
|
|
+ triggerEvent(el1, 'keyup', e => (e.key = 'a'))
|
|
|
+ triggerEvent(el2, 'keyup', e => (e.key = 'b'))
|
|
|
+ expect(fn).toBeCalledTimes(2)
|
|
|
+ })
|
|
|
+
|
|
|
+ it('withModifiers cache wrapped listener separately for different modifiers', () => {
|
|
|
+ const el1 = document.createElement('button')
|
|
|
+ const el2 = document.createElement('button')
|
|
|
+ const fn = vi.fn()
|
|
|
+ const handler1 = withModifiers(fn, ['ctrl'])
|
|
|
+ const handler2 = withModifiers(fn, ['shift'])
|
|
|
+ expect(handler1 === handler2).toBe(false)
|
|
|
+ patchEvent(el1, 'onClick', null, handler1, null)
|
|
|
+ patchEvent(el2, 'onClick', null, handler2, null)
|
|
|
+ triggerEvent(el1, 'click', e => (e.ctrlKey = true))
|
|
|
+ triggerEvent(el2, 'click', e => (e.shiftKey = true))
|
|
|
+ expect(fn).toBeCalledTimes(2)
|
|
|
+ })
|
|
|
})
|