diff --git a/src/browser/__tests__/ReactBrowserEventEmitter-test.js b/src/browser/__tests__/ReactBrowserEventEmitter-test.js index 6232b4914ae02..0be3e3f9e44ec 100644 --- a/src/browser/__tests__/ReactBrowserEventEmitter-test.js +++ b/src/browser/__tests__/ReactBrowserEventEmitter-test.js @@ -57,6 +57,7 @@ var LISTENER = mocks.getMockFunction(); var ON_CLICK_KEY = keyOf({onClick: null}); var ON_TOUCH_TAP_KEY = keyOf({onTouchTap: null}); var ON_CHANGE_KEY = keyOf({onChange: null}); +var ON_MOUSE_ENTER_KEY = keyOf({onMouseEnter: null}); /** @@ -320,6 +321,17 @@ describe('ReactBrowserEventEmitter', function() { expect(handleParentClick.mock.calls.length).toBe(0); }); + it('should have mouse enter simulated by test utils', function() { + ReactBrowserEventEmitter.putListener( + getID(CHILD), + ON_MOUSE_ENTER_KEY, + recordID.bind(null, getID(CHILD)) + ); + ReactTestUtils.Simulate.mouseEnter(CHILD); + expect(idCallOrder.length).toBe(1); + expect(idCallOrder[0]).toBe(getID(CHILD)); + }); + it('should infer onTouchTap from a touchStart/End', function() { ReactBrowserEventEmitter.putListener( getID(CHILD), diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 7421f3be9a8ef..42c878f78fbf6 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -411,17 +411,25 @@ function makeSimulator(eventType) { node = domComponentOrNode; } + var dispatchConfig = + ReactBrowserEventEmitter.eventNameDispatchConfigs[eventType]; + var fakeNativeEvent = new Event(); fakeNativeEvent.target = node; // 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( - ReactBrowserEventEmitter.eventNameDispatchConfigs[eventType], + dispatchConfig, ReactMount.getID(node), fakeNativeEvent ); assign(event, eventData); - EventPropagators.accumulateTwoPhaseDispatches(event); + + if (dispatchConfig.phasedRegistrationNames) { + EventPropagators.accumulateTwoPhaseDispatches(event); + } else { + EventPropagators.accumulateDirectDispatches(event); + } ReactUpdates.batchedUpdates(function() { EventPluginHub.enqueueEvents(event);