diff --git a/.npmignore b/.npmignore index 43ceb5d..51c4959 100644 --- a/.npmignore +++ b/.npmignore @@ -2,3 +2,8 @@ src/ test/ .nyc_output/ coverage/ +examples/ +*.webpack.config.js +.babelrc +.eslintrc +.gitignore diff --git a/src/connect.js b/src/connect.js index 25af825..f9024b1 100644 --- a/src/connect.js +++ b/src/connect.js @@ -25,7 +25,7 @@ const connect = (propsToPass, callbackName) => (Component) => { } propSubscritpion(prop) { - if (prop.value) { + if (prop.value !== undefined) { this.setState({ [prop.name]: prop.value, }); diff --git a/test/cycleReactDriver.spec.js b/test/cycleReactDriver.spec.js index b5e3d25..665a6ab 100644 --- a/test/cycleReactDriver.spec.js +++ b/test/cycleReactDriver.spec.js @@ -165,6 +165,23 @@ describe('Cycle React Driver', () => { expect(renderMock.getWrapper().find(Dummy)).to.not.have.prop('prop'); }); + it('Should render a prop from the driver if its value is falsy but defined', () => { + const ConnectedDummy = connect()(Dummy); + const cycleReactDriver = makeCycleReactDriver(, '#app'); + const prop = new Rx.Subject(); + + cycleReactDriver(prop); + prop.next({ name: 'prop1', value: 0 }); + prop.next({ name: 'prop2', value: null }); + prop.next({ name: 'prop3', value: '' }); + prop.next({ name: 'prop4', value: false }); + + expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop1', 0); + expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop2', null); + expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop3', ''); + expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop4', false); + }); + it('Should only render props specified in connect', () => { const ConnectedDummy = connect(['filteredIn'])(Dummy); const cycleReactDriver = makeCycleReactDriver(, '#app');