From 961626d01466fce9c9cda4b05bee6d179c741ca4 Mon Sep 17 00:00:00 2001 From: Samuel Vaillant Date: Fri, 5 Oct 2018 21:01:23 +0200 Subject: [PATCH] fix(InstantSearch): avoid useless search on addWidgets (#3178) --- src/lib/InstantSearch.js | 2 +- src/lib/__tests__/InstantSearch-test.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/lib/InstantSearch.js b/src/lib/InstantSearch.js index 0d70b75d2d..3f2e547443 100644 --- a/src/lib/InstantSearch.js +++ b/src/lib/InstantSearch.js @@ -205,7 +205,7 @@ To help you migrate, please refer to the migration guide: https://community.algo }); // Init the widget directly if instantsearch has been already started - if (this.started) { + if (this.started && Boolean(widgets.length)) { this.searchParameters = this.widgets.reduce(enhanceConfiguration({}), { ...this.helper.state, }); diff --git a/src/lib/__tests__/InstantSearch-test.js b/src/lib/__tests__/InstantSearch-test.js index 9c18b58c66..72cd1f90d7 100644 --- a/src/lib/__tests__/InstantSearch-test.js +++ b/src/lib/__tests__/InstantSearch-test.js @@ -620,6 +620,20 @@ describe('InstantSearch lifecycle', () => { expect(search.searchParameters.facets).toEqual(['price']); expect(search.searchParameters.disjunctiveFacets).toEqual(['categories']); }); + + it('should not trigger a search without widgets to add', () => { + search.start(); + + expect(helperSearchSpy.callCount).toBe(1); + expect(search.widgets).toHaveLength(0); + expect(search.started).toBe(true); + + search.addWidgets([]); + + expect(helperSearchSpy.callCount).toBe(1); + expect(search.widgets).toHaveLength(0); + expect(search.started).toBe(true); + }); }); it('should remove all widgets without triggering a search on dispose', () => {