From eab8bf13bcd44fd50567c5680a5016be10e58b04 Mon Sep 17 00:00:00 2001 From: Sam Kvale Date: Sun, 10 Mar 2019 15:20:27 -0500 Subject: [PATCH] feat(sortObject): Add a test for issue 344 --- src/formatter/sortObject.js | 9 +++++++-- src/index.spec.js | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/formatter/sortObject.js b/src/formatter/sortObject.js index 6871d0041..85655415c 100644 --- a/src/formatter/sortObject.js +++ b/src/formatter/sortObject.js @@ -23,8 +23,13 @@ export default function sortObject(value: any): any { if (key === '_owner') { return result; } - // eslint-disable-next-line no-param-reassign - result[key] = sortObject(value[key]); + if (key === 'current') { + // eslint-disable-next-line no-param-reassign + result[key] = '[Circular]'; + } else { + // eslint-disable-next-line no-param-reassign + result[key] = sortObject(value[key]); + } return result; }, {}); } diff --git a/src/index.spec.js b/src/index.spec.js index 9103d139a..054f6d3c2 100644 --- a/src/index.spec.js +++ b/src/index.spec.js @@ -1126,4 +1126,27 @@ describe('reactElementToJSXString(ReactElement)', () => { } expect(mount().find('#hello')).toHaveLength(1); }); + + it('should not cause recursive loop when an element contains a ref', () => { + expect.assertions(1); + class App extends Component { + constructor(props) { + super(props); + this.inputRef = React.createRef(); + } + componentDidMount() { + expect(reactElementToJSXString()).toEqual( + `` + ); + } + render() { + return ; + } + } + mount(); + }); });