fix(runtime-dom): fix v-on same computed handler on multiple elements

fix #1747
This commit is contained in:
Evan You
2020-08-03 17:55:22 -04:00
parent b2a91429ed
commit 1c967fc44b
2 changed files with 44 additions and 9 deletions

View File

@@ -119,4 +119,38 @@ describe(`runtime-dom: events patching`, () => {
expect(fn1).toHaveBeenCalledTimes(1)
expect(fn2).toHaveBeenCalledTimes(0)
})
// #1747
it('should handle same computed handler function being bound on multiple targets', async () => {
const el1 = document.createElement('div')
const el2 = document.createElement('div')
const event = new Event('click')
const prevFn = jest.fn()
const nextFn = jest.fn()
patchProp(el1, 'onClick', null, prevFn)
patchProp(el2, 'onClick', null, prevFn)
el1.dispatchEvent(event)
el2.dispatchEvent(event)
await timeout()
expect(prevFn).toHaveBeenCalledTimes(2)
expect(nextFn).toHaveBeenCalledTimes(0)
patchProp(el1, 'onClick', prevFn, nextFn)
patchProp(el2, 'onClick', prevFn, nextFn)
el1.dispatchEvent(event)
el2.dispatchEvent(event)
await timeout()
expect(prevFn).toHaveBeenCalledTimes(2)
expect(nextFn).toHaveBeenCalledTimes(2)
el1.dispatchEvent(event)
el2.dispatchEvent(event)
await timeout()
expect(prevFn).toHaveBeenCalledTimes(2)
expect(nextFn).toHaveBeenCalledTimes(4)
})
})