@samitouri / QOS-React / commits / a4dd68fb3d

Add a test for nested portals (#8416)

Dan Abramov committed Nov 24, 2016 at 18:43 UTC a4dd68fb3d6bae79b555442a3e4c3f3484ccb2bf
2 files changed +34
scripts/fiber/tests-passing.txt
+1
@@ -490,6 +490,7 @@ src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js
490 * finds the first child even when fragment is nested
491 * finds the first child even when first child renders null
492 * should render portal children
493 +* should render nested portals
494 * should pass portal context when rendering subtree elsewhere
495 * should update portal context if it changes due to setState
496 * should update portal context if it changes due to re-render
src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js
+33
@@ -280,6 +280,39 @@ describe('ReactDOMFiber', () => {
280 ]);
281 });
282
283 + it('should render nested portals', () => {
284 + var portalContainer1 = document.createElement('div');
285 + var portalContainer2 = document.createElement('div');
286 + var portalContainer3 = document.createElement('div');
287 +
288 + ReactDOM.render([
289 + <div>normal[0]</div>,
290 + ReactDOM.unstable_createPortal([
291 + <div>portal1[0]</div>,
292 + ReactDOM.unstable_createPortal(
293 + <div>portal2[0]</div>,
294 + portalContainer2
295 + ),
296 + ReactDOM.unstable_createPortal(
297 + <div>portal3[0]</div>,
298 + portalContainer3
299 + ),
300 + <div>portal1[1]</div>,
301 + ], portalContainer1),
302 + <div>normal[1]</div>,
303 + ], container);
304 + expect(portalContainer1.innerHTML).toBe('<div>portal1[0]</div><div>portal1[1]</div>');
305 + expect(portalContainer2.innerHTML).toBe('<div>portal2[0]</div>');
306 + expect(portalContainer3.innerHTML).toBe('<div>portal3[0]</div>');
307 + expect(container.innerHTML).toBe('<div>normal[0]</div><div>normal[1]</div>');
308 +
309 + ReactDOM.unmountComponentAtNode(container);
310 + expect(portalContainer1.innerHTML).toBe('');
311 + expect(portalContainer2.innerHTML).toBe('');
312 + expect(portalContainer3.innerHTML).toBe('');
313 + expect(container.innerHTML).toBe('');
314 + });
315 +
316 it('should pass portal context when rendering subtree elsewhere', () => {
317 var portalContainer = document.createElement('div');
318