Skip to content

Commit

Permalink
Add test for displayName on React.memo components (#18925)
Browse files Browse the repository at this point in the history
* Add test for displayName on React.memo components

* Added extra memo displayName test

Co-authored-by: Brian Vaughn <brian.david.vaughn@gmail.com>
  • Loading branch information
eps1lon and bvaughn committed May 15, 2020
1 parent 6ed5c22 commit c390ab3
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions packages/react-reconciler/src/__tests__/ReactMemo-test.js
Expand Up @@ -497,5 +497,44 @@ describe('memo', () => {
expect(root).toMatchRenderedOutput('1');
});
});

it('should honor a displayName if set on the memo wrapper in warnings', () => {
const MemoComponent = React.memo(function Component(props) {
return <div {...props} />;
});
MemoComponent.displayName = 'Foo';
MemoComponent.propTypes = {
required: PropTypes.string.isRequired,
};

expect(() =>
ReactNoop.render(<MemoComponent optional="foo" />),
).toErrorDev(
'Warning: Failed prop type: The prop `required` is marked as required in ' +
'`Foo`, but its value is `undefined`.\n' +
' in Foo (at **)',
);
});

it('should honor a inner displayName if set on the wrapped function', () => {
function Component(props) {
return <div {...props} />;
}
Component.displayName = 'Foo';

const MemoComponent = React.memo(Component);
MemoComponent.displayName = 'Bar';
MemoComponent.propTypes = {
required: PropTypes.string.isRequired,
};

expect(() =>
ReactNoop.render(<MemoComponent optional="foo" />),
).toErrorDev(
'Warning: Failed prop type: The prop `required` is marked as required in ' +
'`Foo`, but its value is `undefined`.\n' +
' in Foo (at **)',
);
});
}
});

0 comments on commit c390ab3

Please sign in to comment.