diff --git a/src/algoliasearch.helper.js b/src/algoliasearch.helper.js index 30a57f4ea..577143166 100644 --- a/src/algoliasearch.helper.js +++ b/src/algoliasearch.helper.js @@ -305,15 +305,10 @@ AlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxF content = Array.isArray(content) ? content[0] : content; - content.facetHits = Array.isArray(content.facetHits) - ? content.facetHits - : []; - - content.facetHits = content.facetHits.map(function(f) { + content.facetHits.forEach(function(f) { f.isRefined = isDisjunctive ? state.isDisjunctiveFacetRefined(facet, f.value) : state.isFacetRefined(facet, f.value); - return f; }); return content; diff --git a/test/spec/algoliasearch.helper/pendingSearch.js b/test/spec/algoliasearch.helper/pendingSearch.js index d2e87b379..cbedce360 100644 --- a/test/spec/algoliasearch.helper/pendingSearch.js +++ b/test/spec/algoliasearch.helper/pendingSearch.js @@ -67,13 +67,18 @@ test('When searchOnce with promises, hasPendingRequests is true', function(done) }); test('When searchForFacetValues, hasPendingRequests is true', function(done) { - var testData = require('../../datasets/SearchParameters/search.dataset')(); var client = algoliaSearch('dsf', 'dsfdf'); var triggerCb; client.searchForFacetValues = function() { return new Promise(function(resolve) { - triggerCb = function() { resolve([testData.response]); }; + triggerCb = function() { + resolve([{ + exhaustiveFacetsCount: true, + facetHits: [], + processingTimeMS: 3 + }]); + }; }); }; diff --git a/test/spec/algoliasearch.helper/searchForFacetValues.js b/test/spec/algoliasearch.helper/searchForFacetValues.js index 8d156fc8b..2a4b9b420 100644 --- a/test/spec/algoliasearch.helper/searchForFacetValues.js +++ b/test/spec/algoliasearch.helper/searchForFacetValues.js @@ -2,13 +2,21 @@ var algoliasearchHelper = require('../../../index'); +function makeFakeSearchForFacetValuesResponse() { + return { + exhaustiveFacetsCount: true, + facetHits: [], + processingTimeMS: 3 + }; +} + test('searchForFacetValues calls the client method over the index method', function() { var clientSearchForFacetValues = jest.fn(function() { - return Promise.resolve([{}]); + return Promise.resolve([makeFakeSearchForFacetValuesResponse()]); }); var indexSearchForFacetValues = jest.fn(function() { - return Promise.resolve({}); + return Promise.resolve(makeFakeSearchForFacetValuesResponse()); }); var fakeClient = { @@ -30,7 +38,7 @@ test('searchForFacetValues calls the client method over the index method', funct test('searchForFacetValues calls the index method if no client method', function() { var indexSearchForFacetValues = jest.fn(function() { - return Promise.resolve({}); + return Promise.resolve(makeFakeSearchForFacetValuesResponse()); }); var fakeClient = { @@ -53,11 +61,7 @@ test('searchForFacetValues resolve with the correct response from client', funct addAlgoliaAgent: function() {}, searchForFacetValues: function() { return Promise.resolve([ - { - exhaustiveFacetsCount: true, - facetHits: [], - processingTimeMS: 3 - } + makeFakeSearchForFacetValuesResponse() ]); } }; @@ -77,11 +81,7 @@ test('searchForFacetValues resolve with the correct response from initIndex', fu initIndex: function() { return { searchForFacetValues: function() { - return Promise.resolve({ - exhaustiveFacetsCount: true, - facetHits: [], - processingTimeMS: 3 - }); + return Promise.resolve(makeFakeSearchForFacetValuesResponse()); } }; } @@ -98,7 +98,7 @@ test('searchForFacetValues resolve with the correct response from initIndex', fu test('index.searchForFacetValues should search for facetValues with the current state', function() { var indexSearchForFacetValues = jest.fn(function() { - return Promise.resolve({}); + return Promise.resolve(makeFakeSearchForFacetValuesResponse()); }); var fakeClient = { @@ -128,7 +128,7 @@ test('index.searchForFacetValues should search for facetValues with the current test('index.searchForFacetValues can override the current search state', function() { var indexSearchForFacetValues = jest.fn(function() { - return Promise.resolve({}); + return Promise.resolve(makeFakeSearchForFacetValuesResponse()); }); var fakeClient = { @@ -161,7 +161,7 @@ test('index.searchForFacetValues can override the current search state', functio test('client.searchForFacetValues should search for facetValues with the current state', function() { var clientSearchForFacetValues = jest.fn(function() { - return Promise.resolve([{}]); + return Promise.resolve([makeFakeSearchForFacetValuesResponse()]); }); var fakeClient = { @@ -188,7 +188,7 @@ test('client.searchForFacetValues should search for facetValues with the current test('client.searchForFacetValues can override the current search state', function() { var clientSearchForFacetValues = jest.fn(function() { - return Promise.resolve([{}]); + return Promise.resolve([makeFakeSearchForFacetValuesResponse()]); }); var fakeClient = {