Handle nested Fragments in toTree (#12106) (#12107)
Maciej Kasprzyk committed
Jan 28, 2018 at 00:03 UTC
ef8d6d92a28835a8ab89a876f877306a5c3feffe
2 files changed
+24
packages/react-test-renderer/src/ReactTestRenderer.js
+2
@@ -338,6 +338,8 @@ function toTree(node: ?Fiber) {
338
};
339
case HostText: // 6
340
return node.stateNode.text;
341
+ case Fragment: // 10
342
+ return toTree(node.child);
343
default:
344
invariant(
345
false,
packages/react-test-renderer/src/__tests__/ReactTestRenderer-test.js
+22
@@ -530,6 +530,28 @@ describe('ReactTestRenderer', () => {
530
);
531
});
532
533
+ it('toTree() handles nested Fragments', () => {
534
+ const Foo = () => (
535
+ <React.Fragment>
536
+ <React.Fragment>foo</React.Fragment>
537
+ </React.Fragment>
538
+ );
539
+ const renderer = ReactTestRenderer.create(<Foo />);
540
+ const tree = renderer.toTree();
541
+
542
+ cleanNodeOrArray(tree);
543
+
544
+ expect(prettyFormat(tree)).toEqual(
545
+ prettyFormat({
546
+ nodeType: 'component',
547
+ type: Foo,
548
+ instance: null,
549
+ props: {},
550
+ rendered: 'foo',
551
+ }),
552
+ );
553
+ });
554
+
555
it('toTree() handles null rendering components', () => {
556
class Foo extends React.Component {
557
render() {