Skip to content

Commit f610b7a

Browse files
author
Patrick Sachs
authored
Merge pull request #312 from thomasbertet/test-307-sort-object-recursive-loop
test(ReactElementToJsxString): Add test when dealing with element inside prop object
2 parents 03e1a19 + 305e05b commit f610b7a

File tree

4 files changed

+277
-8
lines changed

4 files changed

+277
-8
lines changed

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"babel-register": "6.26.0",
4848
"conventional-changelog-cli": "2.0.5",
4949
"doctoc": "1.3.1",
50+
"enzyme": "^3.7.0",
51+
"enzyme-adapter-react-16": "^1.6.0",
5052
"eslint": "5.6.1",
5153
"eslint-config-algolia": "13.2.3",
5254
"eslint-config-prettier": "3.1.0",
@@ -82,5 +84,8 @@
8284
"dependencies": {
8385
"is-plain-object": "2.0.4",
8486
"stringify-object": "3.2.2"
87+
},
88+
"jest": {
89+
"setupTestFrameworkScriptFile": "<rootDir>tests/setupTests.js"
8590
}
8691
}

src/index.spec.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
/* eslint-disable react/no-string-refs */
44

5-
import React, { Fragment } from 'react';
5+
import React, { Fragment, Component } from 'react';
66
import { createRenderer } from 'react-test-renderer/shallow';
7+
import { mount } from 'enzyme';
78
import reactElementToJSXString from './index';
89
import AnonymousStatelessComponent from './AnonymousStatelessComponent';
910

@@ -1087,4 +1088,29 @@ describe('reactElementToJSXString(ReactElement)', () => {
10871088
)
10881089
).toEqual(`<div render={<><div /><div /></>} />`);
10891090
});
1091+
1092+
it('should not cause recursive loop when prop object contains an element', () => {
1093+
const Test = () => <div>Test</div>;
1094+
1095+
const Container = ({ title: { component } }) => <div>{component}</div>;
1096+
1097+
class App extends Component {
1098+
render() {
1099+
const inside = <Container title={{ component: <Test /> }} />;
1100+
1101+
const insideString = reactElementToJSXString(inside);
1102+
1103+
return (
1104+
<div>
1105+
{insideString}
1106+
1107+
<div id="hello" />
1108+
1109+
<p>Start editing to see some magic happen :)</p>
1110+
</div>
1111+
);
1112+
}
1113+
}
1114+
expect(mount(<App />).find('#hello')).toHaveLength(1);
1115+
});
10901116
});

tests/setupTests.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import Enzyme from 'enzyme';
2+
import Adapter from 'enzyme-adapter-react-16';
3+
4+
Enzyme.configure({ adapter: new Adapter() });

0 commit comments

Comments
 (0)