diff --git a/components/menu/IconMenu.js b/components/menu/IconMenu.js index 2b3bad2d..d00fd3f5 100644 --- a/components/menu/IconMenu.js +++ b/components/menu/IconMenu.js @@ -47,7 +47,7 @@ const factory = (IconButton, Menu) => { } componentWillReceiveProps(nextProps) { - if (nextProps.active !== this.props.active && this.state.active !== nextProps.active) { + if (this.state.active !== nextProps.active) { this.setState({ active: nextProps.active }); } } diff --git a/components/menu/__test__/index.spec.js b/components/menu/__test__/index.spec.js index f11ab1ef..59624fcf 100644 --- a/components/menu/__test__/index.spec.js +++ b/components/menu/__test__/index.spec.js @@ -18,6 +18,19 @@ describe('IconMenu', () => { const wrapper = shallow(); expect(wrapper.find('Menu').props().active).toBe(false); }); + + it('sets \'active\' Menu prop correctly after IconButton click', () => { + const wrapper = mount(); + wrapper.find('IconButton').simulate('click'); + expect(wrapper.find('Menu').props().active).toBe(true); + }); + + it('sets \'active\' Menu prop correctly when prop is set after IconButton click', () => { + const wrapper = mount(); + wrapper.find('IconButton').simulate('click'); + wrapper.setProps({ active: false }); + expect(wrapper.find('Menu').props().active).toBe(false); + }); }); describe('when \'active\' prop is set to true', () => { @@ -31,6 +44,13 @@ describe('IconMenu', () => { wrapper.find('IconButton').simulate('click'); expect(wrapper.find('Menu').props().active).toBe(false); }); + + it('sets \'active\' Menu prop correctly when prop is set after IconButton click', () => { + const wrapper = mount(); + wrapper.find('IconButton').simulate('click'); + wrapper.setProps({ active: true }); + expect(wrapper.find('Menu').props().active).toBe(true); + }); }); }); });