From cfc5a3e47efa812f7a2c4fa5ad2b0687daacd280 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sat, 7 Jul 2018 18:33:05 -0700 Subject: [PATCH] [Fix] `shallow`/`mount`: default iterator should be iterable --- .../test/ReactWrapper-spec.jsx | 20 +++++++++++++++++++ .../test/ShallowWrapper-spec.jsx | 20 +++++++++++++++++++ packages/enzyme/src/ReactWrapper.js | 1 + packages/enzyme/src/ShallowWrapper.js | 1 + 4 files changed, 42 insertions(+) diff --git a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx index 407dee646..814bf8014 100644 --- a/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ReactWrapper-spec.jsx @@ -4018,6 +4018,26 @@ describeWithDOM('mount', () => { expect(c1).to.deep.equal(c); expect(d1).to.deep.equal(d); }); + + it('returns an iterable iterator', () => { + class Foo extends React.Component { + render() { + return ( +
+ Hello + Hello + Hello + Hello +
+ ); + } + } + const wrapper = mount(); + + const iter = wrapper[ITERATOR_SYMBOL](); + expect(iter).to.have.property(ITERATOR_SYMBOL).and.be.a('function'); + expect(iter[ITERATOR_SYMBOL]()).to.equal(iter); + }); }); describe('.instance()', () => { diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index b143f1e05..2e1288a58 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -4973,6 +4973,26 @@ describe('shallow', () => { expect(c1).to.deep.equal(c); expect(d1).to.deep.equal(d); }); + + it('returns an iterable iterator', () => { + class Foo extends React.Component { + render() { + return ( +
+ Hello + Hello + Hello + Hello +
+ ); + } + } + const wrapper = shallow(); + + const iter = wrapper[ITERATOR_SYMBOL](); + expect(iter).to.have.property(ITERATOR_SYMBOL).and.be.a('function'); + expect(iter[ITERATOR_SYMBOL]()).to.equal(iter); + }); }); describe('.getNodes()', () => { diff --git a/packages/enzyme/src/ReactWrapper.js b/packages/enzyme/src/ReactWrapper.js index 742c39cab..bfe73da60 100644 --- a/packages/enzyme/src/ReactWrapper.js +++ b/packages/enzyme/src/ReactWrapper.js @@ -1062,6 +1062,7 @@ if (ITERATOR_SYMBOL) { const iter = this[NODES][ITERATOR_SYMBOL](); const adapter = getAdapter(this[OPTIONS]); return { + [ITERATOR_SYMBOL]() { return this; }, next() { const next = iter.next(); if (next.done) { diff --git a/packages/enzyme/src/ShallowWrapper.js b/packages/enzyme/src/ShallowWrapper.js index 3b9eae661..66dbd97fb 100644 --- a/packages/enzyme/src/ShallowWrapper.js +++ b/packages/enzyme/src/ShallowWrapper.js @@ -1264,6 +1264,7 @@ if (ITERATOR_SYMBOL) { const iter = this.getNodesInternal()[ITERATOR_SYMBOL](); const adapter = getAdapter(this[OPTIONS]); return { + [ITERATOR_SYMBOL]() { return this; }, next() { const next = iter.next(); if (next.done) {