diff --git a/src/MountedTraversal.js b/src/MountedTraversal.js index ad1b94326..34995c42b 100644 --- a/src/MountedTraversal.js +++ b/src/MountedTraversal.js @@ -51,7 +51,8 @@ export function instHasClassName(inst, className) { if (!isDOMComponent(inst)) { return false; } - const classes = findDOMNode(inst).className || ''; + let classes = findDOMNode(inst).className || ''; + classes = classes.replace(/\s/g, ' '); return ` ${classes} `.indexOf(` ${className} `) > -1; } diff --git a/src/ShallowTraversal.js b/src/ShallowTraversal.js index 9d38c8408..2a783f694 100644 --- a/src/ShallowTraversal.js +++ b/src/ShallowTraversal.js @@ -28,7 +28,8 @@ export function childrenOfNode(node) { } export function hasClassName(node, className) { - const classes = propsOfNode(node).className || ''; + let classes = propsOfNode(node).className || ''; + classes = classes.replace(/\s/g, ' '); return ` ${classes} `.indexOf(` ${className} `) > -1; } diff --git a/test/ReactWrapper-spec.js b/test/ReactWrapper-spec.js index a8c28124a..9febd1ff2 100644 --- a/test/ReactWrapper-spec.js +++ b/test/ReactWrapper-spec.js @@ -900,6 +900,23 @@ describeWithDOM('mount', () => { expect(wrapper.is('.foo.bar')).to.equal(true); }); + it('should ignore insignificant whitespace', () => { + const className = ` + foo + `; + const wrapper = mount(
); + expect(wrapper.is('.foo')).to.equal(true); + }); + + it('should handle all significant whitespace', () => { + const className = `foo + + bar + baz`; + const wrapper = mount(
); + expect(wrapper.is('.foo.bar.baz')).to.equal(true); + }); + it('should return false when selector does not match', () => { const wrapper = mount(
); expect(wrapper.is('.foo')).to.equal(false); diff --git a/test/ShallowWrapper-spec.js b/test/ShallowWrapper-spec.js index 475bfb93d..b7e816c36 100644 --- a/test/ShallowWrapper-spec.js +++ b/test/ShallowWrapper-spec.js @@ -1007,6 +1007,22 @@ describe('shallow', () => { expect(wrapper.is('.foo.bar')).to.equal(true); }); + it('should ignore insignificant whitespace', () => { + const className = `foo + `; + const wrapper = shallow(
); + expect(wrapper.is('.foo')).to.equal(true); + }); + + it('should handle all significant whitespace', () => { + const className = `foo + + bar + baz`; + const wrapper = shallow(
); + expect(wrapper.is('.foo.bar.baz')).to.equal(true); + }); + it('should return false when selector does not match', () => { const wrapper = shallow(
); expect(wrapper.is('.foo')).to.equal(false);