Skip to content

Commit d8117d0

Browse files
committed
Merge pull request #1366 from spicyj/enterleave-testutils
Make Simulate.mouseEnter/Leave use direct dispatch
2 parents 6d868a2 + 6b03975 commit d8117d0

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/browser/__tests__/ReactBrowserEventEmitter-test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ var LISTENER = mocks.getMockFunction();
5757
var ON_CLICK_KEY = keyOf({onClick: null});
5858
var ON_TOUCH_TAP_KEY = keyOf({onTouchTap: null});
5959
var ON_CHANGE_KEY = keyOf({onChange: null});
60+
var ON_MOUSE_ENTER_KEY = keyOf({onMouseEnter: null});
6061

6162

6263
/**
@@ -320,6 +321,17 @@ describe('ReactBrowserEventEmitter', function() {
320321
expect(handleParentClick.mock.calls.length).toBe(0);
321322
});
322323

324+
it('should have mouse enter simulated by test utils', function() {
325+
ReactBrowserEventEmitter.putListener(
326+
getID(CHILD),
327+
ON_MOUSE_ENTER_KEY,
328+
recordID.bind(null, getID(CHILD))
329+
);
330+
ReactTestUtils.Simulate.mouseEnter(CHILD);
331+
expect(idCallOrder.length).toBe(1);
332+
expect(idCallOrder[0]).toBe(getID(CHILD));
333+
});
334+
323335
it('should infer onTouchTap from a touchStart/End', function() {
324336
ReactBrowserEventEmitter.putListener(
325337
getID(CHILD),

src/test/ReactTestUtils.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,17 +411,25 @@ function makeSimulator(eventType) {
411411
node = domComponentOrNode;
412412
}
413413

414+
var dispatchConfig =
415+
ReactBrowserEventEmitter.eventNameDispatchConfigs[eventType];
416+
414417
var fakeNativeEvent = new Event();
415418
fakeNativeEvent.target = node;
416419
// We don't use SyntheticEvent.getPooled in order to not have to worry about
417420
// properly destroying any properties assigned from `eventData` upon release
418421
var event = new SyntheticEvent(
419-
ReactBrowserEventEmitter.eventNameDispatchConfigs[eventType],
422+
dispatchConfig,
420423
ReactMount.getID(node),
421424
fakeNativeEvent
422425
);
423426
assign(event, eventData);
424-
EventPropagators.accumulateTwoPhaseDispatches(event);
427+
428+
if (dispatchConfig.phasedRegistrationNames) {
429+
EventPropagators.accumulateTwoPhaseDispatches(event);
430+
} else {
431+
EventPropagators.accumulateDirectDispatches(event);
432+
}
425433

426434
ReactUpdates.batchedUpdates(function() {
427435
EventPluginHub.enqueueEvents(event);

0 commit comments

Comments
 (0)