Skip to content

Commit d2c06d9

Browse files
committed
[enzyme-adapter-react-{16,16.3}] [fix] forwardRef: respect .displayName on the forwardRef
Fixes #1810.
1 parent ca054b9 commit d2c06d9

3 files changed

Lines changed: 30 additions & 0 deletions

File tree

packages/enzyme-adapter-react-16.3/src/ReactSixteenThreeAdapter.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,9 @@ class ReactSixteenThreeAdapter extends EnzymeAdapter {
461461
case ContextConsumer || NaN: return 'ContextConsumer';
462462
case ContextProvider || NaN: return 'ContextProvider';
463463
case ForwardRef || NaN: {
464+
if (type.displayName) {
465+
return type.displayName;
466+
}
464467
const name = type.render.displayName || functionName(type.render);
465468
return name ? `ForwardRef(${name})` : 'ForwardRef';
466469
}

packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,9 @@ class ReactSixteenAdapter extends EnzymeAdapter {
463463
case ContextConsumer || NaN: return 'ContextConsumer';
464464
case ContextProvider || NaN: return 'ContextProvider';
465465
case ForwardRef || NaN: {
466+
if (type.displayName) {
467+
return type.displayName;
468+
}
466469
const name = type.render.displayName || functionName(type.render);
467470
return name ? `ForwardRef(${name})` : 'ForwardRef';
468471
}

packages/enzyme-test-suite/test/Debug-spec.jsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -849,14 +849,20 @@ describe('debug', () => {
849849

850850
describeIf(is('>= 16.3'), 'forwarded ref Components', () => {
851851
let Parent;
852+
let ParentOfNamed;
852853
let SomeComponent;
854+
let NamedComponent;
853855
beforeEach(() => {
854856
SomeComponent = forwardRef((props, ref) => (
855857
<div ref={ref}>
856858
<span className="child1" />
857859
</div>
858860
));
859861
Parent = () => <span><SomeComponent foo="hello" /></span>;
862+
863+
NamedComponent = forwardRef((props, ref) => (<div />));
864+
NamedComponent.displayName = 'a named forward ref!';
865+
ParentOfNamed = () => <NamedComponent />;
860866
});
861867

862868
it('works with a `mount` wrapper', () => {
@@ -885,5 +891,23 @@ describe('debug', () => {
885891
</ForwardRef>`
886892
));
887893
});
894+
895+
it('works with a displayName with shallow', () => {
896+
const wrapper = shallow(<ParentOfNamed />);
897+
expect(wrapper.debug()).to.equal((
898+
`<${NamedComponent.displayName} />`
899+
));
900+
});
901+
902+
it('works with a displayName with mount', () => {
903+
const wrapper = mount(<ParentOfNamed />);
904+
expect(wrapper.debug()).to.equal((
905+
`<ParentOfNamed>
906+
<${NamedComponent.displayName}>
907+
<div />
908+
</${NamedComponent.displayName}>
909+
</ParentOfNamed>`
910+
));
911+
});
888912
});
889913
});

0 commit comments

Comments
 (0)