From f3dee6148f97733fc876f373058b9cfb3dc0bdcc Mon Sep 17 00:00:00 2001 From: Ryan Seddon Date: Tue, 21 Aug 2018 16:43:38 +1000 Subject: [PATCH 1/2] fix(menus): Remove event on unmount --- packages/menus/src/containers/MenuContainer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/menus/src/containers/MenuContainer.js b/packages/menus/src/containers/MenuContainer.js index 289df2b749b..07f5578de5a 100644 --- a/packages/menus/src/containers/MenuContainer.js +++ b/packages/menus/src/containers/MenuContainer.js @@ -159,7 +159,7 @@ class MenuContainer extends ControlledComponent { componentWillUnmount() { const doc = getDocument ? getDocument(this.props) : document; - doc.addEventListener('mousedown', this.handleOutsideMouseDown); + doc.removeEventListener('mousedown', this.handleOutsideMouseDown); } componentDidUpdate(prevProps, prevState) { From 495544e3e11a75c6150defe1be817633d7bb4796 Mon Sep 17 00:00:00 2001 From: Ryan Seddon Date: Wed, 22 Aug 2018 14:02:19 +1000 Subject: [PATCH 2/2] add tests --- .../menus/src/containers/MenuContainer.spec.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/menus/src/containers/MenuContainer.spec.js b/packages/menus/src/containers/MenuContainer.spec.js index a2807e87681..65580a37220 100644 --- a/packages/menus/src/containers/MenuContainer.spec.js +++ b/packages/menus/src/containers/MenuContainer.spec.js @@ -254,6 +254,20 @@ describe('MenuContainer', () => { }); }); + describe('componentWillUnmount', () => { + it('removes mousedown event listener', () => { + const removeEventListenerSpy = jest.fn(); + + document.removeEventListener = removeEventListenerSpy; + wrapper = mountWithTheme(basicExample({ onChange: onChangeSpy }), { + enzymeOptions: { attachTo: document.body } + }); + wrapper.unmount(); + + expect(removeEventListenerSpy).toHaveBeenCalled(); + }); + }); + describe('getTriggerProps()', () => { beforeEach(() => { wrapper = mountWithTheme(basicExample({ onChange: onChangeSpy }));