Skip to content

Commit 3b60966

Browse files
immitsurschristian
authored andcommitted
fix: shallow render with fragment at top lvl
1 parent 0faec39 commit 3b60966

File tree

2 files changed

+29
-11
lines changed

2 files changed

+29
-11
lines changed

src/pretty.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,12 @@ function _renderToStringPretty(
103103
// components
104104
if (typeof nodeName === 'function') {
105105
isComponent = true;
106-
if (opts.shallow && (inner || opts.renderRootComponent === false)) {
107-
nodeName = getComponentName(nodeName);
108-
} else if (nodeName === Fragment) {
109-
const children = [];
106+
107+
let isFragment = nodeName === Fragment,
108+
isShallow = opts.shallow && (inner || opts.renderRootComponent === false);
109+
110+
if (isFragment || (isShallow && isFragment)) {
111+
let children = [];
110112
getChildren(children, vnode.props.children);
111113
return _renderToStringPretty(
112114
children,
@@ -116,6 +118,8 @@ function _renderToStringPretty(
116118
isSvgMode,
117119
selectValue
118120
);
121+
} else if (isShallow) {
122+
nodeName = getComponentName(nodeName);
119123
} else {
120124
let rendered;
121125

test/shallowRender.test.jsx

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,26 @@ describe('shallowRender()', () => {
5252
expect(Test).to.have.been.calledOnce;
5353
});
5454

55-
it('should ignore Fragments', () => {
56-
let rendered = shallowRender(
57-
<Fragment>
58-
<div>foo</div>
59-
</Fragment>
60-
);
61-
expect(rendered).to.equal(`<div>foo</div>`);
55+
describe('should ignore Fragments', () => {
56+
it('passed directly', () => {
57+
let rendered = shallowRender(
58+
<Fragment>
59+
<div>foo</div>
60+
</Fragment>
61+
);
62+
expect(rendered).to.equal(`<div>foo</div>`);
63+
});
64+
65+
it('passed from FC', () => {
66+
const Test = () => (
67+
<Fragment>
68+
<div>foo</div>
69+
</Fragment>
70+
);
71+
72+
let rendered = shallowRender(<Test />);
73+
74+
expect(rendered).to.equal(`<div>foo</div>`);
75+
});
6276
});
6377
});

0 commit comments

Comments
 (0)