diff --git a/src/__tests__/store.js b/src/__tests__/store.js index b009f7a3e..079a7839b 100644 --- a/src/__tests__/store.js +++ b/src/__tests__/store.js @@ -238,8 +238,34 @@ describe('Store', () => { distinct: null, attributesToRetrieve: ['objectID'], }; + store.addFacet('price'); // Make sure distinct parameter is gone when overrided with null. expect(store.queryParameters).not.toHaveProperty('distinct'); }); + + test('should allow to retrieve all the searchParameters', () => { + const client = algoliaClient('app_id', 'api_key'); + const helper = algoliaHelper(client); + + const store = new Store(helper); + + const searchParameters = helper.getState(); + expect(store.searchParameters).toEqual(searchParameters); + }); + + test('should allow to accept new search parameters', () => { + const client = algoliaClient('app_id', 'api_key'); + const helper = algoliaHelper(client); + + const store = new Store(helper); + + const searchParameters = helper.getState(); + const newSearchParameters = Object.assign({}, searchParameters, { + page: 3, + }); + + store.searchParameters = newSearchParameters; + expect(store.searchParameters).toEqual(newSearchParameters); + }); }); diff --git a/src/store.js b/src/store.js index 9d94f959f..1ed160fcf 100644 --- a/src/store.js +++ b/src/store.js @@ -1,5 +1,5 @@ import algolia from 'algoliasearch'; -import algoliaHelper from 'algoliasearch-helper'; +import algoliaHelper, { SearchParameters } from 'algoliasearch-helper'; import { version } from '../package.json'; export const FACET_AND = 'and'; @@ -306,6 +306,15 @@ export class Store { return parameters; } + get searchParameters() { + return Object.assign({}, this._helper.state); + } + + set searchParameters(searchParameters) { + const newSearchParameters = SearchParameters.make(searchParameters); + this._helper.setState(newSearchParameters); + } + // Todo: find a better name for this function. refresh() { this._helper.search();