Additional findDOMNode tests

This is failing in Fiber without the fix. Because we have no deletions to rely
on in this case and the placement effects have already happened.
This commit is contained in:
Sebastian Markbage committed 2016-12-01 21:03:24 -08:00
1 parent 361ce5c00b
commit 4fd1802ddf
3 files changed
+56

No files matched your search

@@ -459,5 +459,29 @@ describe('ReactDOMFiber', () => {
expect(portalContainer.innerHTML).toBe('<div>changed-changed</div>');
expect(container.innerHTML).toBe('');
});
it('findDOMNode should find dom element after expanding a fragment', () => {
class MyNode extends React.Component {
render() {
return (
!this.props.flag ?
[<div key="a" />] :
[<span key="b" />, <div key="a" />]
);
}
}
var container = document.createElement('div');
var myNodeA = ReactDOM.render(<MyNode />, container);
var a = ReactDOM.findDOMNode(myNodeA);
expect(a.tagName).toBe('DIV');
var myNodeB = ReactDOM.render(<MyNode flag={true} />, container);
expect(myNodeA === myNodeB).toBe(true);
var b = ReactDOM.findDOMNode(myNodeB);
expect(b.tagName).toBe('SPAN');
});
}
});
@@ -34,6 +34,32 @@ describe('findDOMNode', () => {
expect(mySameDiv).toBe(myDiv);
});
it('findDOMNode should find dom element after an update from null', () => {
function Bar({ flag }) {
if (flag) {
return <span>A</span>;
}
return null;
}
class MyNode extends React.Component {
render() {
return <Bar flag={this.props.flag} />;
}
}
var container = document.createElement('div');
var myNodeA = ReactDOM.render(<MyNode />, container);
var a = ReactDOM.findDOMNode(myNodeA);
expect(a).toBe(null);
var myNodeB = ReactDOM.render(<MyNode flag={true} />, container);
expect(myNodeA === myNodeB).toBe(true);
var b = ReactDOM.findDOMNode(myNodeB);
expect(b.tagName).toBe('SPAN');
});
it('findDOMNode should reject random objects', () => {
expect(function() {
ReactDOM.findDOMNode({foo: 'bar'});