Skip to content

Commit

Permalink
Merge pull request #6380 from zpao/simulatewarning
Browse files Browse the repository at this point in the history
Make sure simulated events don't warn when providing extra event properties
  • Loading branch information
zpao committed Apr 6, 2016
2 parents 3f9e21f + 42b1cba commit 65c68b5
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,10 @@ describe('SyntheticEvent', function() {
);
});

it('should properly log warnings when events simulated with rendered components', function() {
// TODO: reenable this test. We are currently silencing these warnings when
// using TestUtils.Simulate to avoid spurious warnings that result from the
// way we simulate events.
xit('should properly log warnings when events simulated with rendered components', function() {
spyOn(console, 'error');
var event;
var element = document.createElement('div');
Expand Down
3 changes: 3 additions & 0 deletions src/test/ReactTestUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,9 @@ function makeSimulator(eventType) {
fakeNativeEvent,
node
);
// Since we aren't using pooling, always persist the event. This will make
// sure it's marked and won't warn when setting additional properties.
event.persist();
Object.assign(event, eventData);

if (dispatchConfig.phasedRegistrationNames) {
Expand Down
23 changes: 23 additions & 0 deletions src/test/__tests__/ReactTestUtils-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,29 @@ describe('ReactTestUtils', function() {
expect(handler).not.toHaveBeenCalled();
});

it('should not warn when simulating events with extra properties', function() {
spyOn(console, 'error');

var CLIENT_X = 100;

var Component = React.createClass({
handleClick: function(e) {
expect(e.clientX).toBe(CLIENT_X);
},
render: function() {
return <div onClick={this.handleClick} />;
},
});

var element = document.createElement('div');
var instance = ReactDOM.render(<Component />, element);
ReactTestUtils.Simulate.click(
ReactDOM.findDOMNode(instance),
{clientX: CLIENT_X}
);
expect(console.error.calls.length).toBe(0);
});

it('can scry with stateless components involved', function() {
var Stateless = () => <div><hr /></div>;
var SomeComponent = React.createClass({
Expand Down

0 comments on commit 65c68b5

Please sign in to comment.