diff --git a/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js b/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js index afa65effa..f3ee8ac09 100644 --- a/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js +++ b/packages/enzyme-adapter-react-16/src/ReactSixteenAdapter.js @@ -803,7 +803,10 @@ class ReactSixteenAdapter extends EnzymeAdapter { switch ($$typeofType) { case ContextConsumer || NaN: return 'ContextConsumer'; case ContextProvider || NaN: return 'ContextProvider'; - case Memo || NaN: return displayNameOfNode(type); + case Memo || NaN: { + const nodeName = displayNameOfNode(node); + return typeof nodeName === 'string' ? nodeName : `Memo(${displayNameOfNode(type)})`; + } case ForwardRef || NaN: { if (type.displayName) { return type.displayName; diff --git a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx index f511ee28d..8e5c7cab8 100644 --- a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx @@ -685,7 +685,7 @@ describeWithDOM('mount', () => { const Foo = memo(InnerFoo); const wrapper = mount(); - expect(wrapper.debug()).to.equal(` + expect(wrapper.debug()).to.equal(`
@@ -701,7 +701,7 @@ describeWithDOM('mount', () => { qux
-
`); +`); expect(wrapper.find('InnerComp')).to.have.lengthOf(1); expect(wrapper.find('.bar')).to.have.lengthOf(1); expect(wrapper.find('.qoo').text()).to.equal('qux'); diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index 9828f342f..79b7945a8 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -1664,7 +1664,7 @@ describe('shallow', () => { it('works with memoizing', () => { const wrapper = shallow(); - expect(wrapper.debug()).to.equal(''); + expect(wrapper.debug()).to.equal(''); expect(wrapper.dive().debug()).to.equal(`
Guest
`); diff --git a/packages/enzyme-test-suite/test/shared/methods/debug.jsx b/packages/enzyme-test-suite/test/shared/methods/debug.jsx index 6cc407720..8ec72a1fc 100644 --- a/packages/enzyme-test-suite/test/shared/methods/debug.jsx +++ b/packages/enzyme-test-suite/test/shared/methods/debug.jsx @@ -71,6 +71,41 @@ export default function describeDebug({ }); describeIf(is('>= 16.6'), 'React.memo', () => { + describe('display names', () => { + function SFC() { return null; } + function SFCwithDisplayName() { return null; } + SFCwithDisplayName.displayName = 'SFC!'; + + const SFCMemo = memo && memo(SFC); + const SFCwithDisplayNameMemo = memo && memo(SFCwithDisplayName); + + const SFCMemoWithDisplayName = memo && memo(SFC); + SFCMemoWithDisplayName.displayName = 'SFCMemoWithDisplayName!'; + const SFCMemoWitDoubleDisplayName = memo && memo(SFCwithDisplayName); + SFCMemoWitDoubleDisplayName.displayName = 'SFCMemoWitDoubleDisplayName!'; + + it('displays the expected display names', () => { + const wrapper = Wrap(( +
+ + + + + + +
+ )); + expect(wrapper.debug()).to.equal(`
+ + + + + + +
`); + }); + }); + describe('defaultProps', () => { function Add({ a, b, c }) { return
{String(a)}|{String(b)}|{String(c)}
; diff --git a/packages/enzyme-test-suite/test/shared/methods/find.jsx b/packages/enzyme-test-suite/test/shared/methods/find.jsx index d2240225c..cf6d8cef6 100644 --- a/packages/enzyme-test-suite/test/shared/methods/find.jsx +++ b/packages/enzyme-test-suite/test/shared/methods/find.jsx @@ -876,7 +876,7 @@ export default function describeFind({ const expectedDebug = isShallow ? `
- +
bar
@@ -884,7 +884,7 @@ export default function describeFind({ qux
` - : ` + : `
@@ -893,13 +893,13 @@ export default function describeFind({
- +
find me?
-
+
bar
@@ -907,9 +907,10 @@ export default function describeFind({ qux
-
`; +`; expect(wrapper.debug()).to.equal(expectedDebug); - expect(wrapper.find('InnerComp')).to.have.lengthOf(2); + expect(wrapper.find('InnerComp')).to.have.lengthOf(1); + expect(wrapper.find('Memo(InnerComp)')).to.have.lengthOf(1); expect(wrapper.find('.bar')).to.have.lengthOf(1); expect(wrapper.find('.qoo').text()).to.equal('qux'); expect(wrapper.find(InnerMemo)).to.have.lengthOf(1);