Skip to content

Commit 5c6fcd8

Browse files
samoussHaroenv
authored andcommitted
feat(connectSearchBox): update getWidgetSearchParameters (#4002)
* test(connectSearchBox): remove routing describe * refactor(connectSearchBox): sets default value with getWidgetSearchParameters
1 parent c77cf66 commit 5c6fcd8

File tree

3 files changed

+91
-116
lines changed

3 files changed

+91
-116
lines changed

src/connectors/search-box/__tests__/__snapshots__/connectSearchBox-test.js.snap

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,6 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`connectSearchBox routing getWidgetSearchParameters should add the refinements according to the UI state provided 1`] = `
4-
SearchParameters {
5-
"disjunctiveFacets": Array [],
6-
"disjunctiveFacetsRefinements": Object {},
7-
"facets": Array [],
8-
"facetsExcludes": Object {},
9-
"facetsRefinements": Object {},
10-
"hierarchicalFacets": Array [],
11-
"hierarchicalFacetsRefinements": Object {},
12-
"index": "",
13-
"numericRefinements": Object {},
14-
"query": "some search",
15-
"tagRefinements": Array [],
16-
}
17-
`;
18-
19-
exports[`connectSearchBox routing getWidgetSearchParameters should enforce the default value if no value is the ui state 1`] = `
20-
SearchParameters {
21-
"disjunctiveFacets": Array [],
22-
"disjunctiveFacetsRefinements": Object {},
23-
"facets": Array [],
24-
"facetsExcludes": Object {},
25-
"facetsRefinements": Object {},
26-
"hierarchicalFacets": Array [],
27-
"hierarchicalFacetsRefinements": Object {},
28-
"index": "",
29-
"numericRefinements": Object {},
30-
"tagRefinements": Array [],
31-
}
32-
`;
33-
34-
exports[`connectSearchBox routing getWidgetState should add an entry equal to the refinement 1`] = `
3+
exports[`connectSearchBox getWidgetState should add an entry equal to the refinement 1`] = `
354
Object {
365
"query": "some query",
376
}

src/connectors/search-box/__tests__/connectSearchBox-test.js

Lines changed: 89 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,28 @@ import algoliasearchHelper, {
55
import connectSearchBox from '../connectSearchBox';
66

77
describe('connectSearchBox', () => {
8+
const getInitializedWidget = (config = {}) => {
9+
const renderFn = jest.fn();
10+
const makeWidget = connectSearchBox(renderFn);
11+
const widget = makeWidget({
12+
...config,
13+
});
14+
15+
const initialConfig = {};
16+
const helper = algoliasearchHelper({}, '', initialConfig);
17+
helper.search = jest.fn();
18+
19+
widget.init({
20+
helper,
21+
state: helper.state,
22+
createURL: () => '#',
23+
});
24+
25+
const { refine } = renderFn.mock.calls[0][0];
26+
27+
return [widget, helper, refine];
28+
};
29+
830
describe('Usage', () => {
931
it('throws without render function', () => {
1032
expect(() => {
@@ -369,105 +391,89 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/search-box/
369391
});
370392
});
371393

372-
describe('routing', () => {
373-
const getInitializedWidget = (config = {}) => {
374-
const renderFn = jest.fn();
375-
const makeWidget = connectSearchBox(renderFn);
376-
const widget = makeWidget({
377-
...config,
394+
describe('getWidgetState', () => {
395+
test('should give back the object unmodified if the default value is selected', () => {
396+
const [widget, helper] = getInitializedWidget();
397+
const uiStateBefore = {};
398+
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
399+
searchParameters: helper.state,
400+
helper,
378401
});
402+
expect(uiStateAfter).toBe(uiStateBefore);
403+
});
379404

380-
const initialConfig = {};
381-
const helper = algoliasearchHelper({}, '', initialConfig);
382-
helper.search = jest.fn();
383-
384-
widget.init({
405+
test('should add an entry equal to the refinement', () => {
406+
const [widget, helper, refine] = getInitializedWidget();
407+
refine('some query');
408+
const uiStateBefore = {};
409+
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
410+
searchParameters: helper.state,
385411
helper,
386-
state: helper.state,
387-
createURL: () => '#',
388412
});
413+
expect(uiStateAfter).toMatchSnapshot();
414+
});
389415

390-
const { refine } = renderFn.mock.calls[0][0];
391-
392-
return [widget, helper, refine];
393-
};
394-
395-
describe('getWidgetState', () => {
396-
test('should give back the object unmodified if the default value is selected', () => {
397-
const [widget, helper] = getInitializedWidget();
398-
const uiStateBefore = {};
399-
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
416+
test('should give back the same instance if the value is alreay in the uiState', () => {
417+
const [widget, helper, refine] = getInitializedWidget();
418+
refine('query');
419+
const uiStateBefore = widget.getWidgetState(
420+
{},
421+
{
400422
searchParameters: helper.state,
401423
helper,
402-
});
403-
expect(uiStateAfter).toBe(uiStateBefore);
424+
}
425+
);
426+
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
427+
searchParameters: helper.state,
428+
helper,
404429
});
430+
expect(uiStateAfter).toBe(uiStateBefore);
431+
});
432+
});
405433

406-
test('should add an entry equal to the refinement', () => {
407-
const [widget, helper, refine] = getInitializedWidget();
408-
refine('some query');
409-
const uiStateBefore = {};
410-
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
411-
searchParameters: helper.state,
412-
helper,
413-
});
414-
expect(uiStateAfter).toMatchSnapshot();
415-
});
434+
describe('getWidgetSearchParameters', () => {
435+
test('returns the `SearchParameters` with the value from `uiState`', () => {
436+
const [widget, helper] = getInitializedWidget();
416437

417-
test('should give back the same instance if the value is alreay in the uiState', () => {
418-
const [widget, helper, refine] = getInitializedWidget();
419-
refine('query');
420-
const uiStateBefore = widget.getWidgetState(
421-
{},
422-
{
423-
searchParameters: helper.state,
424-
helper,
425-
}
426-
);
427-
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
428-
searchParameters: helper.state,
429-
helper,
430-
});
431-
expect(uiStateAfter).toBe(uiStateBefore);
438+
expect(helper.state).toEqual(
439+
new SearchParameters({
440+
index: '',
441+
})
442+
);
443+
444+
const actual = widget.getWidgetSearchParameters(helper.state, {
445+
uiState: {
446+
query: 'Apple',
447+
},
432448
});
449+
450+
expect(actual).toEqual(
451+
new SearchParameters({
452+
index: '',
453+
query: 'Apple',
454+
})
455+
);
433456
});
434457

435-
describe('getWidgetSearchParameters', () => {
436-
test('should return the same SP if no value is in the UI state', () => {
437-
const [widget, helper] = getInitializedWidget();
438-
const uiState = {};
439-
const searchParametersBefore = SearchParameters.make(helper.state);
440-
const searchParametersAfter = widget.getWidgetSearchParameters(
441-
searchParametersBefore,
442-
{ uiState }
443-
);
444-
expect(searchParametersAfter).toBe(searchParametersBefore);
445-
});
458+
test('returns the `SearchParameters` with the default value', () => {
459+
const [widget, helper] = getInitializedWidget();
446460

447-
test('should add the refinements according to the UI state provided', () => {
448-
const [widget, helper] = getInitializedWidget();
449-
const uiState = {
450-
query: 'some search',
451-
};
452-
const searchParametersBefore = SearchParameters.make(helper.state);
453-
const searchParametersAfter = widget.getWidgetSearchParameters(
454-
searchParametersBefore,
455-
{ uiState }
456-
);
457-
expect(searchParametersAfter).toMatchSnapshot();
458-
});
461+
expect(helper.state).toEqual(
462+
new SearchParameters({
463+
index: '',
464+
})
465+
);
459466

460-
test('should enforce the default value if no value is the ui state', () => {
461-
const [widget, helper, refine] = getInitializedWidget();
462-
refine('previous search');
463-
const uiState = {};
464-
const searchParametersBefore = SearchParameters.make(helper.state);
465-
const searchParametersAfter = widget.getWidgetSearchParameters(
466-
searchParametersBefore,
467-
{ uiState }
468-
);
469-
expect(searchParametersAfter).toMatchSnapshot();
467+
const actual = widget.getWidgetSearchParameters(helper.state, {
468+
uiState: {},
470469
});
470+
471+
expect(actual).toEqual(
472+
new SearchParameters({
473+
index: '',
474+
query: '',
475+
})
476+
);
471477
});
472478
});
473479
});

src/connectors/search-box/connectSearchBox.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export default function connectSearchBox(renderFn, unmountFn = noop) {
159159
},
160160

161161
getWidgetSearchParameters(searchParameters, { uiState }) {
162-
return searchParameters.setQueryParameter('query', uiState.query);
162+
return searchParameters.setQueryParameter('query', uiState.query || '');
163163
},
164164
};
165165
};

0 commit comments

Comments
 (0)