diff --git a/docs/examples/tourism/search.js b/docs/examples/tourism/search.js
index 6446f84601..3e2ad50654 100644
--- a/docs/examples/tourism/search.js
+++ b/docs/examples/tourism/search.js
@@ -4,7 +4,8 @@
var search = instantsearch({
appId: 'latency',
apiKey: '6be0576ff61c053d5f9a3225e2a90f76',
- indexName: 'airbnb'
+ indexName: 'airbnb',
+ urlSync: true
});
search.addWidget(
diff --git a/src/widgets/numeric-selector/__tests__/numeric-selector-test.js b/src/widgets/numeric-selector/__tests__/numeric-selector-test.js
index 88ee660288..91f6203394 100644
--- a/src/widgets/numeric-selector/__tests__/numeric-selector-test.js
+++ b/src/widgets/numeric-selector/__tests__/numeric-selector-test.js
@@ -55,7 +55,6 @@ describe('numericSelector()', () => {
helper = {
addNumericRefinement: sinon.spy(),
clearRefinements: sinon.spy(),
- getRefinements: sinon.stub().returns([]),
search: sinon.spy()
};
results = {
@@ -66,8 +65,31 @@ describe('numericSelector()', () => {
helper.addNumericRefinement.reset();
});
- it('doesn\'t configure anything', () => {
- expect(widget.getConfiguration).toEqual(undefined);
+ it('configures the right numericRefinement', () => {
+ expect(widget.getConfiguration({}, {})).toEqual({
+ numericRefinements: {
+ aNumAttr: {
+ '=': [1]
+ }
+ }
+ });
+ });
+
+ it('configures the right numericRefinement when present in the url', () => {
+ const urlState = {
+ numericRefinements: {
+ aNumAttr: {
+ '=': [2]
+ }
+ }
+ };
+ expect(widget.getConfiguration({}, urlState)).toEqual({
+ numericRefinements: {
+ aNumAttr: {
+ '=': [2]
+ }
+ }
+ });
});
it('calls twice ReactDOM.render(, container)', () => {
@@ -82,10 +104,13 @@ describe('numericSelector()', () => {
});
it('computes refined values and pass them to ', () => {
- helper.getRefinements = sinon.stub().returns([{
- operator: '=',
- value: [20]
- }]);
+ helper.state = {
+ numericRefinements: {
+ aNumAttr: {
+ '=': [20]
+ }
+ }
+ };
expectedProps.currentValue = 20;
widget.render({helper, results, state: helper.state});
expect(ReactDOM.render.firstCall.args[0]).toEqualJSX();
diff --git a/src/widgets/numeric-selector/numeric-selector.js b/src/widgets/numeric-selector/numeric-selector.js
index 06369665b0..8381991aa3 100644
--- a/src/widgets/numeric-selector/numeric-selector.js
+++ b/src/widgets/numeric-selector/numeric-selector.js
@@ -5,7 +5,6 @@ import {
getContainerNode
} from '../../lib/utils.js';
import cx from 'classnames';
-import find from 'lodash/find';
import autoHideContainerHOC from '../../decorators/autoHideContainer.js';
import SelectorComponent from '../../components/Selector.js';
@@ -59,12 +58,16 @@ function numericSelector({
};
return {
+ getConfiguration(currentSearchParameters, searchParametersFromUrl) {
+ return {
+ numericRefinements: {
+ [attributeName]: {
+ [operator]: [this._getRefinedValue(searchParametersFromUrl)]
+ }
+ }
+ };
+ },
init({helper}) {
- const currentValue = this._getRefinedValue(helper);
- if (currentValue !== undefined) {
- helper.addNumericRefinement(attributeName, operator, currentValue);
- }
-
this._refine = value => {
helper.clearRefinements(attributeName);
if (value !== undefined) {
@@ -78,7 +81,7 @@ function numericSelector({
ReactDOM.render(