diff --git a/scripts/fiber/tests-failing.txt b/scripts/fiber/tests-failing.txt index 8d705c30e8..8db2ea6703 100644 --- a/scripts/fiber/tests-failing.txt +++ b/scripts/fiber/tests-failing.txt @@ -18,6 +18,9 @@ src/isomorphic/modern/element/__tests__/ReactJSXElementValidator-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 +* should reconcile portal children + 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 diff --git a/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js b/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js index fd20ef8a8c..6dd3146541 100644 --- a/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js +++ b/src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js @@ -367,6 +367,82 @@ describe('ReactDOMFiber', () => { expect(container.innerHTML).toBe(''); }); + it('should reconcile portal children', () => { + var portalContainer = document.createElement('div'); + + ReactDOM.render( +
+ {ReactDOM.unstable_createPortal( +
portal:1
, + portalContainer + )} +
, + container + ); + expect(portalContainer.innerHTML).toBe('
portal:1
'); + expect(container.innerHTML).toBe('
'); + + ReactDOM.render( +
+ {ReactDOM.unstable_createPortal( +
portal:2
, + portalContainer + )} +
, + container + ); + expect(portalContainer.innerHTML).toBe('
portal:2
'); + expect(container.innerHTML).toBe('
'); + + ReactDOM.render( +
+ {ReactDOM.unstable_createPortal( +

portal:3

, + portalContainer + )} +
, + container + ); + expect(portalContainer.innerHTML).toBe('

portal:3

'); + expect(container.innerHTML).toBe('
'); + + ReactDOM.render( +
+ {ReactDOM.unstable_createPortal( + ['Hi', 'Bye'], + portalContainer + )} +
, + container + ); + expect(portalContainer.innerHTML).toBe('HiBye'); + expect(container.innerHTML).toBe('
'); + + ReactDOM.render( +
+ {ReactDOM.unstable_createPortal( + ['Bye', 'Hi'], + portalContainer + )} +
, + container + ); + expect(portalContainer.innerHTML).toBe('ByeHi'); + expect(container.innerHTML).toBe('
'); + + ReactDOM.render( +
+ {ReactDOM.unstable_createPortal( + null, + portalContainer + )} +
, + container + ); + expect(portalContainer.innerHTML).toBe(''); + expect(container.innerHTML).toBe('
'); + }); + it('should keep track of namespace across portals (simple)', () => { assertNamespacesMatch(