diff --git a/package.json b/package.json index c8e6a8e..9aee655 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "jsdom": "^8.0.4", "pragmatist": "^3.0.16", "react": "^0.15.0-alpha.1", + "react-addons-shallow-compare": "^0.15.0-alpha.1", "react-addons-test-utils": "^0.15.0-alpha.1", "react-dom": "^0.15.0-alpha.1" }, diff --git a/tests/extendReactClass.js b/tests/extendReactClass.js index 2348bd5..e555f5c 100644 --- a/tests/extendReactClass.js +++ b/tests/extendReactClass.js @@ -6,6 +6,7 @@ import { import React from 'react'; import TestUtils from 'react-addons-test-utils'; +import shallowCompare from 'react-addons-shallow-compare'; import jsdom from 'jsdom'; import extendReactClass from './../src/extendReactClass'; @@ -52,6 +53,36 @@ describe('extendReactClass', () => { TestUtils.renderIntoDocument(); }); + it('does not affect pure-render logic', (done) => { + let Component, + instance, + rendered = false; + + const styles = { + foo: 'foo-1' + }; + + Component = class extends React.Component { + shouldComponentUpdate(newProps) { + if(rendered) { + expect(shallowCompare(this.props, newProps)).to.be.true; + done(); + } + return true; + } + + render () { + rendered = true; + } + }; + + Component = extendReactClass(Component, styles); + + instance = TestUtils.renderIntoDocument(); + + // trigger shouldComponentUpdate + instance.setState({}); + }); }); context('overwriting default styles using "styles" property of the extended component', () => { it('overwrites default styles', (done) => {