From 3b80d4dcd7bbe2d28bf20ac1ac9b8eb7a379060e Mon Sep 17 00:00:00 2001 From: Evan Jacobs Date: Sun, 26 Jun 2016 15:11:37 -0400 Subject: [PATCH] [TestUtils] Copy type to nativeEvent in Simulate. (#6154) Although it is unreasonable to set every possible property for simulated events, `type` is useful for event handlers that are shared between types and potentially have different behaviors. (cherry picked from commit 5a20d449f64ff2d9ef3d4346655244f435880327) --- src/test/ReactTestUtils.js | 2 ++ src/test/__tests__/ReactTestUtils-test.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 093bfad0dd..746a185b1a 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -523,6 +523,8 @@ function makeSimulator(eventType) { var fakeNativeEvent = new Event(); fakeNativeEvent.target = node; + fakeNativeEvent.type = eventType.toLowerCase(); + // We don't use SyntheticEvent.getPooled in order to not have to worry about // properly destroying any properties assigned from `eventData` upon release var event = new SyntheticEvent( diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index 5a63dc32a9..28cd917e56 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -558,4 +558,23 @@ describe('ReactTestUtils', function() { expect(hrs.length).toBe(2); }); + describe('Simulate', () => { + it('should set the type of the event', () => { + let event; + const stub = jest.genMockFn().mockImpl((e) => { + e.persist(); + event = e; + }); + + const container = document.createElement('div'); + const instance = ReactDOM.render(
, container); + const node = ReactDOM.findDOMNode(instance); + + ReactTestUtils.Simulate.keyDown(node); + + expect(event.type).toBe('keydown'); + expect(event.nativeEvent.type).toBe('keydown'); + }); + }); + });