Skip to content

Commit 8144cf3

Browse files
authored
fix(algolia): throw error if searchClient is missing (#1122)
* fix(algolia): throw error if searchClient is missing It's a synchronous error, but as this is only for debugging, i don't think it makes a big difference how the error is thrown. * move to invariant / clearer message * no test * not an option
1 parent 30af95a commit 8144cf3

File tree

4 files changed

+46
-3
lines changed

4 files changed

+46
-3
lines changed

packages/autocomplete-preset-algolia/src/requester/__tests__/getAlgoliaFacets.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ import { createSearchClient } from '../../../../../test/utils';
22
import { getAlgoliaFacets } from '../getAlgoliaFacets';
33

44
describe('getAlgoliaFacets', () => {
5+
test('throws without search client', () => {
6+
expect(() =>
7+
getAlgoliaFacets({
8+
// @ts-expect-error
9+
searchClient: undefined,
10+
queries: [],
11+
})
12+
).toThrowErrorMatchingInlineSnapshot(
13+
`"[Autocomplete] The \`searchClient\` parameter is required for getAlgoliaFacets({ searchClient })."`
14+
);
15+
});
16+
517
test('returns the description', () => {
618
const searchClient = createSearchClient({
719
search: jest.fn(),

packages/autocomplete-preset-algolia/src/requester/__tests__/getAlgoliaResults.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ import { createSearchClient } from '../../../../../test/utils';
22
import { getAlgoliaResults } from '../getAlgoliaResults';
33

44
describe('getAlgoliaResults', () => {
5+
test('throws without search client', () => {
6+
expect(() =>
7+
getAlgoliaResults({
8+
// @ts-expect-error
9+
searchClient: undefined,
10+
queries: [],
11+
})
12+
).toThrowErrorMatchingInlineSnapshot(
13+
`"[Autocomplete] The \`searchClient\` parameter is required for getAlgoliaResults({ searchClient })."`
14+
);
15+
});
16+
517
test('returns the description', () => {
618
const searchClient = createSearchClient({
719
search: jest.fn(),

packages/autocomplete-preset-algolia/src/requester/getAlgoliaFacets.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { invariant } from '@algolia/autocomplete-shared';
2+
13
import type { MultipleQueriesQuery } from '../types';
24

35
import { createAlgoliaRequester } from './createAlgoliaRequester';
@@ -7,6 +9,11 @@ import { RequestParams } from './createRequester';
79
* Retrieves Algolia facet hits from multiple indices.
810
*/
911
export function getAlgoliaFacets<TTHit>(requestParams: RequestParams<TTHit>) {
12+
invariant(
13+
typeof requestParams.searchClient === 'object',
14+
'The `searchClient` parameter is required for getAlgoliaFacets({ searchClient }).'
15+
);
16+
1017
const requester = createAlgoliaRequester({
1118
transformResponse: (response) => response.facetHits,
1219
});
Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
1+
import { invariant } from '@algolia/autocomplete-shared';
2+
13
import { createAlgoliaRequester } from './createAlgoliaRequester';
4+
import { RequestParams } from './createRequester';
25

36
/**
47
* Retrieves Algolia results from multiple indices.
58
*/
6-
export const getAlgoliaResults = createAlgoliaRequester({
7-
transformResponse: (response) => response.hits,
8-
});
9+
export function getAlgoliaResults<TTHit>(requestParams: RequestParams<TTHit>) {
10+
invariant(
11+
typeof requestParams.searchClient === 'object',
12+
'The `searchClient` parameter is required for getAlgoliaResults({ searchClient }).'
13+
);
14+
15+
const requester = createAlgoliaRequester({
16+
transformResponse: (response) => response.hits,
17+
});
18+
19+
return requester(requestParams);
20+
}

0 commit comments

Comments
 (0)