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);
+ });
});
});
});