From e58f8b0a128818eed5e006881f2d2e76a681efc7 Mon Sep 17 00:00:00 2001 From: Idan Levin Date: Mon, 13 Nov 2017 01:24:28 +0200 Subject: [PATCH 1/3] Change shallowWrapper.text() to handle spaces same behavior as ReactWrapper.text() - remove empty nodes - remove double spaces - remove spaces from beginning or end - not sure all those are all the rule, need to check - couldn't run tests --- .../test/ShallowWrapper-spec.jsx | 24 ++++++++++++++++++- packages/enzyme/src/RSTTraversal.js | 4 +++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index 1ba9c27bb..0c907fc87 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { expect } from 'chai'; import sinon from 'sinon'; -import { shallow, render, ShallowWrapper } from 'enzyme'; +import { shallow, render, ShallowWrapper, mount } from 'enzyme'; import { ITERATOR_SYMBOL, withSetStateAllowed, sym } from 'enzyme/build/Utils'; import './_helpers/setupAdapters'; @@ -1633,6 +1633,28 @@ describe('shallow', () => { matchesRender(
>
); }); + it('should handle spaces with same behavior as ReactWarpper.text()', () => { + const Space = ( +
+
test
+
Hello + + + World
+
Hello World
+
Hello + World
+
Hello World
+
 
+
  
+
+ ) + const wrapper = shallow(Space); + const mounted = mount(Space); + expect(wrapper.text()).to.equal(mounted.text()); + }) + }); + describeIf(!REACT013, 'stateless function components', () => { it('should handle nodes with mapped children', () => { const Foo = props => ( diff --git a/packages/enzyme/src/RSTTraversal.js b/packages/enzyme/src/RSTTraversal.js index 19b2a3b9c..b89b58733 100644 --- a/packages/enzyme/src/RSTTraversal.js +++ b/packages/enzyme/src/RSTTraversal.js @@ -127,5 +127,7 @@ export function getTextFromNode(node) { return childrenOfNode(node).map(getTextFromNode) .join('') - .replace(/\s+/, ' '); + .replace(/^[ \t\n\r]+$/g, '') // remove empty nodes + .replace(/[ \t\n\r]+/, ' ') // remove double spaces + .replace(/(^[ \t\n\r]*|[ \t\n\r]*$)/, ''); // remove spaces from beginning or end } From 6d0dbe4fd05c0195efc16caa73ea937aee283491 Mon Sep 17 00:00:00 2001 From: Idan Levin Date: Mon, 13 Nov 2017 01:46:31 +0200 Subject: [PATCH 2/3] fixed Unexpected token error --- packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index 0c907fc87..097dc0655 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -1648,11 +1648,12 @@ describe('shallow', () => {
 
  
- ) + ); + const wrapper = shallow(Space); const mounted = mount(Space); + expect(wrapper.text()).to.equal(mounted.text()); - }) }); describeIf(!REACT013, 'stateless function components', () => { From 3077c0b8fddfced276e7a5ccbb36ece3dd835d30 Mon Sep 17 00:00:00 2001 From: Idan Levin Date: Mon, 13 Nov 2017 14:44:58 +0200 Subject: [PATCH 3/3] fixed typo; remove replace spaces (ReactWrapper.text() not removing any spaces); fix env on Windows; --- packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx | 8 +++++--- packages/enzyme/src/RSTTraversal.js | 5 +---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx index 097dc0655..e7cb6845e 100644 --- a/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx +++ b/packages/enzyme-test-suite/test/ShallowWrapper-spec.jsx @@ -1633,17 +1633,19 @@ describe('shallow', () => { matchesRender(
>
); }); - it('should handle spaces with same behavior as ReactWarpper.text()', () => { + it('should handle spaces with same behavior as ReactWrapper.text()', () => { const Space = (
test
Hello - World
+ World +
Hello World
Hello - World
+ World +
Hello World
 
  
diff --git a/packages/enzyme/src/RSTTraversal.js b/packages/enzyme/src/RSTTraversal.js index b89b58733..5f4fcd4e0 100644 --- a/packages/enzyme/src/RSTTraversal.js +++ b/packages/enzyme/src/RSTTraversal.js @@ -126,8 +126,5 @@ export function getTextFromNode(node) { } return childrenOfNode(node).map(getTextFromNode) - .join('') - .replace(/^[ \t\n\r]+$/g, '') // remove empty nodes - .replace(/[ \t\n\r]+/, ' ') // remove double spaces - .replace(/(^[ \t\n\r]*|[ \t\n\r]*$)/, ''); // remove spaces from beginning or end + .join(''); }