Skip to content

Commit

Permalink
feat: support TransitionEvent init properties
Browse files Browse the repository at this point in the history
  • Loading branch information
Vince Malone committed Dec 29, 2020
1 parent accb6cc commit aabea34
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/__tests__/events.js
Expand Up @@ -358,6 +358,22 @@ test('assigns clipboardData properties', () => {
expect(clipboardData.getData('text')).toBe('example')
})

test('assigns TransitionEvent init properties', () => {
const node = document.createElement('div')
const spy = jest.fn()
node.addEventListener('transitionend', spy)
const transitionEventInit = {
propertyName: 'opacity',
elapsedTime: 100,
pseudoElement: '',
}
fireEvent.transitionEnd(node, transitionEventInit)
expect(spy).toHaveBeenCalledTimes(1)
expect(spy.mock.calls[0][0]).toEqual(
expect.objectContaining(transitionEventInit),
)
})

test('fires events on Window', () => {
const messageSpy = jest.fn()
window.addEventListener('message', messageSpy)
Expand Down
13 changes: 13 additions & 0 deletions src/events.js
Expand Up @@ -62,6 +62,19 @@ function createEvent(
})
}

// TransitionEvent is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1781
if (EventType === 'TransitionEvent') {
const transitionEventProperties = [
'propertyName',
'elapsedTime',
'pseudoElement',
]
transitionEventProperties.forEach(property => {
const value = eventInit[property]
Object.defineProperty(event, property, {value})
})
}

// DataTransfer is not supported in jsdom: https://github.com/jsdom/jsdom/issues/1568
const dataTransferProperties = ['dataTransfer', 'clipboardData']
dataTransferProperties.forEach(dataTransferKey => {
Expand Down

0 comments on commit aabea34

Please sign in to comment.