From 612473d937518382b6a296afdc490daeb7841589 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sun, 27 Aug 2017 22:24:37 -0700 Subject: [PATCH] [Deps] [breaking] update `cheerio` to v1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The effective breaking change is that now `render` returns a wrapper around the *rendered thing*, like shallow and mount - instead of a “root” that requires you dive into `.children()` See https://github.com/cheeriojs/cheerio/issues/1047#issuecomment-325221409 --- .../test/ShallowWrapper-spec.jsx | 22 +++++++++++++------ .../test/staticRender-spec.jsx | 17 +++++--------- packages/enzyme/package.json | 2 +- packages/enzyme/src/ReactWrapper.js | 2 +- packages/enzyme/src/ShallowWrapper.js | 2 +- packages/enzyme/src/render.js | 2 +- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index 10a0a3c11..9fa236a6c 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -2766,7 +2766,7 @@ describe('shallow', () => { }); describe('.render()', () => { - it('should return a cheerio wrapper around the current node', () => { + it('returns a cheerio wrapper around the current node', () => { class Foo extends React.Component { render() { return (
); @@ -2781,15 +2781,21 @@ describe('shallow', () => { ); } } + const wrapper = shallow(); - expect(wrapper.render().find('.in-bar')).to.have.length(1); + + const rendered = wrapper.render(); + expect(rendered.is('.in-bar')).to.equal(true); + expect(rendered).to.have.lengthOf(1); + const renderedFoo = wrapper.find(Foo).render(); - expect(renderedFoo.find('.in-foo')).to.have.length(1); + expect(renderedFoo.is('.in-foo')).to.equal(true); + expect(renderedFoo.is('.in-bar')).to.equal(false); expect(renderedFoo.find('.in-bar')).to.have.length(0); }); - describeIf(!REACT013, 'stateless function components', () => { - it('should return a cheerio wrapper around the current node', () => { + describeIf(!REACT013, 'stateless functional components', () => { + it('returns a cheerio wrapper around the current node', () => { const Foo = () => (
); @@ -2800,9 +2806,11 @@ describe('shallow', () => { ); const wrapper = shallow(); - expect(wrapper.render().find('.in-bar')).to.have.length(1); + expect(wrapper.render().is('.in-bar')).to.equal(true); + const renderedFoo = wrapper.find(Foo).render(); - expect(renderedFoo.find('.in-foo')).to.have.length(1); + expect(renderedFoo.is('.in-foo')).to.equal(true); + expect(renderedFoo.is('.in-bar')).to.equal(false); expect(renderedFoo.find('.in-bar')).to.have.length(0); }); }); diff --git a/packages/enzyme-test-suite/test/staticRender-spec.jsx b/packages/enzyme-test-suite/test/staticRender-spec.jsx index 57f23b5f4..e0d785e59 100644 --- a/packages/enzyme-test-suite/test/staticRender-spec.jsx +++ b/packages/enzyme-test-suite/test/staticRender-spec.jsx @@ -21,16 +21,12 @@ describeWithDOM('render', () => { const context = { name: 'foo' }; const wrapper = render(, { context }); + expect(wrapper).to.have.lengthOf(1); - const rootEls = wrapper.children(); - expect(rootEls).to.have.lengthOf(1); - - expect(rootEls.is('div')).to.equal(true); - expect(rootEls.text()).to.equal('foo'); + expect(wrapper.is('div')).to.equal(true); expect(wrapper.text()).to.equal('foo'); expect(String(wrapper)).to.equal('
foo
'); - expect(String(rootEls)).to.equal('
foo
'); }); it('can pass context to the child of mounted component', () => { @@ -53,20 +49,17 @@ describeWithDOM('render', () => { }; const context = { name: 'foo' }; const wrapper = render(, { context, childContextTypes }); + expect(wrapper).to.have.length(1); - const rootEls = wrapper.children(); - expect(rootEls).to.have.length(1); - - expect(rootEls.is('div')).to.equal(true); + expect(wrapper.is('div')).to.equal(true); - const children = rootEls.children(); + const children = wrapper.children(); expect(children).to.have.length(1); expect(children.is('span')).to.equal(true); expect(children.first().text()).to.equal('foo'); expect(String(wrapper)).to.equal('
foo
'); - expect(String(rootEls)).to.equal('
foo
'); expect(String(children)).to.equal('foo'); }); diff --git a/packages/enzyme/package.json b/packages/enzyme/package.json index f6a5cba88..7f7b444b3 100644 --- a/packages/enzyme/package.json +++ b/packages/enzyme/package.json @@ -31,7 +31,7 @@ "author": "Leland Richardson ", "license": "MIT", "dependencies": { - "cheerio": "^0.22.0", + "cheerio": "^1.0.0-rc.2", "function.prototype.name": "^1.0.3", "is-subset": "^0.1.1", "lodash": "^4.17.4", diff --git a/packages/enzyme/src/ReactWrapper.js b/packages/enzyme/src/ReactWrapper.js index e0eabf7c3..6eb6cafd2 100644 --- a/packages/enzyme/src/ReactWrapper.js +++ b/packages/enzyme/src/ReactWrapper.js @@ -564,7 +564,7 @@ class ReactWrapper { */ render() { const html = this.html(); - return html === null ? cheerio() : cheerio.load(html).root(); + return html === null ? cheerio() : cheerio.load('')(html); } /** diff --git a/packages/enzyme/src/ShallowWrapper.js b/packages/enzyme/src/ShallowWrapper.js index 5bab2813e..02c23f534 100644 --- a/packages/enzyme/src/ShallowWrapper.js +++ b/packages/enzyme/src/ShallowWrapper.js @@ -639,7 +639,7 @@ class ShallowWrapper { * @returns {CheerioWrapper} */ render() { - return this.type() === null ? cheerio() : cheerio.load(this.html()).root(); + return this.type() === null ? cheerio() : cheerio.load('')(this.html()); } /** diff --git a/packages/enzyme/src/render.js b/packages/enzyme/src/render.js index d24f4ebf0..124f11aaa 100644 --- a/packages/enzyme/src/render.js +++ b/packages/enzyme/src/render.js @@ -19,5 +19,5 @@ export default function render(node, options = {}) { const adapter = getAdapter(options); const renderer = adapter.createRenderer({ mode: 'string', ...options }); const html = renderer.render(node, options.context); - return cheerio.load(html).root(); + return cheerio.load('')(html); }