mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
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:
@@ -27,6 +27,9 @@ src/renderers/art/__tests__/ReactART-test.js
|
||||
src/renderers/dom/__tests__/ReactDOMProduction-test.js
|
||||
* should throw with an error code in production
|
||||
|
||||
src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js
|
||||
* findDOMNode should find dom element after expanding a fragment
|
||||
|
||||
src/renderers/dom/shared/__tests__/ReactDOM-test.js
|
||||
* throws in render() if the mount callback is not a function
|
||||
* throws in render() if the update callback is not a function
|
||||
@@ -63,6 +66,9 @@ src/renderers/dom/shared/__tests__/ReactRenderDocument-test.js
|
||||
* should throw on full document render w/ no markup
|
||||
* supports findDOMNode on full-page components
|
||||
|
||||
src/renderers/dom/shared/__tests__/findDOMNode-test.js
|
||||
* findDOMNode should find dom element after an update from null
|
||||
|
||||
src/renderers/shared/__tests__/ReactPerf-test.js
|
||||
* should count no-op update as waste
|
||||
* should count no-op update in child as waste
|
||||
|
||||
@@ -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'});
|
||||
|
||||
Reference in New Issue
Block a user