Skip to content

Commit b8c669f

Browse files
samoussHaroenv
authored andcommitted
feat(connectVoiceSearch): update getWidgetSearchParameters (#4055)
This PR updates the lifecycle `getWidgetSearchParameters` in `connectVoiceSearch` to add the default value. We don't apply the previous value on purpose, the `uiState` drives completely the `SearchParameters`. I've not removed the `getConfiguration` lifecycle (yet) to avoid breaking everything. Once we've made the switch to `getWidgetSearchParameters` we'll remove them.
1 parent 7d001e7 commit b8c669f

File tree

2 files changed

+55
-55
lines changed

2 files changed

+55
-55
lines changed

src/connectors/voice-search/__tests__/connectVoiceSearch-test.js

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -235,80 +235,80 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/voice-searc
235235
});
236236

237237
describe('getWidgetState', () => {
238-
it('returns the same state if query is an empty string', () => {
239-
const { widget, helper, refine } = getInitializedWidget();
240-
const uiStateBefore = { foo: 'bar' };
241-
refine('');
242-
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
243-
searchParameters: helper.state,
244-
});
245-
expect(uiStateAfter).toBe(uiStateBefore);
246-
});
238+
test('returns the `uiState` empty', () => {
239+
const { widget, helper } = getInitializedWidget();
247240

248-
it('returns the same state if query is same', () => {
249-
const { widget, helper, refine } = getInitializedWidget();
250-
refine('myQuery');
251-
const uiStateBefore = widget.getWidgetState(
241+
const actual = widget.getWidgetState(
252242
{},
253243
{
254244
searchParameters: helper.state,
255245
}
256246
);
257-
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
258-
searchParameters: helper.state,
259-
});
260-
expect(uiStateAfter).toBe(uiStateBefore);
247+
248+
expect(actual).toEqual({});
261249
});
262250

263-
it('returns new state with query after refine', () => {
264-
const { widget, helper, refine } = getInitializedWidget();
265-
const uiStateBefore = { foo: 'bar' };
266-
refine('myQuery');
267-
const uiStateAfter = widget.getWidgetState(uiStateBefore, {
268-
searchParameters: helper.state,
269-
});
270-
expect(uiStateAfter).toEqual({
271-
foo: 'bar',
272-
query: 'myQuery',
251+
test('returns the `uiState` with a refinement', () => {
252+
const { widget, helper } = getInitializedWidget();
253+
254+
helper.setQueryParameter('query', 'Apple');
255+
256+
const actual = widget.getWidgetState(
257+
{},
258+
{
259+
searchParameters: helper.state,
260+
}
261+
);
262+
263+
expect(actual).toEqual({
264+
query: 'Apple',
273265
});
274266
});
275267
});
276268

277269
describe('getWidgetSearchParameters', () => {
278-
it('should return the same SearchParameters if no value is in the UI state', () => {
270+
test('returns the `SearchParameters` with the value from `uiState`', () => {
279271
const { widget, helper } = getInitializedWidget();
280-
const uiState = {};
281-
const searchParametersBefore = SearchParameters.make(helper.state);
282-
const searchParametersAfter = widget.getWidgetSearchParameters(
283-
searchParametersBefore,
284-
{ uiState }
272+
273+
expect(helper.state).toEqual(
274+
new SearchParameters({
275+
index: '',
276+
})
277+
);
278+
279+
const actual = widget.getWidgetSearchParameters(helper.state, {
280+
uiState: {
281+
query: 'Apple',
282+
},
283+
});
284+
285+
expect(actual).toEqual(
286+
new SearchParameters({
287+
index: '',
288+
query: 'Apple',
289+
})
285290
);
286-
expect(searchParametersAfter).toBe(searchParametersBefore);
287291
});
288292

289-
it('should add the refinement according to the UI state provided', () => {
293+
test('returns the `SearchParameters` with the default value', () => {
290294
const { widget, helper } = getInitializedWidget();
291-
const uiState = {
292-
query: 'my search',
293-
};
294-
const searchParametersBefore = SearchParameters.make(helper.state);
295-
const searchParametersAfter = widget.getWidgetSearchParameters(
296-
searchParametersBefore,
297-
{ uiState }
295+
296+
expect(helper.state).toEqual(
297+
new SearchParameters({
298+
index: '',
299+
})
298300
);
299-
expect(searchParametersAfter.query).toEqual(uiState.query);
300-
});
301301

302-
it('should enforce the default value if the ui state is empty', () => {
303-
const { widget, helper, refine } = getInitializedWidget();
304-
refine('previous search');
305-
const uiState = {};
306-
const searchParametersBefore = SearchParameters.make(helper.state);
307-
const searchParametersAfter = widget.getWidgetSearchParameters(
308-
searchParametersBefore,
309-
{ uiState }
302+
const actual = widget.getWidgetSearchParameters(helper.state, {
303+
uiState: {},
304+
});
305+
306+
expect(actual).toEqual(
307+
new SearchParameters({
308+
index: '',
309+
query: '',
310+
})
310311
);
311-
expect(searchParametersAfter.query).toBeUndefined();
312312
});
313313
});
314314
});

src/connectors/voice-search/connectVoiceSearch.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ const connectVoiceSearch: VoiceSearchConnector = (
125125
getWidgetState(uiState, { searchParameters }) {
126126
const query = searchParameters.query || '';
127127

128-
if (query === '' || (uiState && uiState.query === query)) {
128+
if (!query) {
129129
return uiState;
130130
}
131131

@@ -136,7 +136,7 @@ const connectVoiceSearch: VoiceSearchConnector = (
136136
},
137137

138138
getWidgetSearchParameters(searchParameters, { uiState }) {
139-
return searchParameters.setQueryParameter('query', uiState.query);
139+
return searchParameters.setQueryParameter('query', uiState.query || '');
140140
},
141141
};
142142
};

0 commit comments

Comments
 (0)