Skip to content

Commit

Permalink
refactor(instantsearch): replace "helper" with the value of "mainHelp…
Browse files Browse the repository at this point in the history
…er" (#6516)

* refactor(instantsearch): remove "helper" in favor of "mainHelper"

[FX-3212]

* refactor(instantsearch): rename "mainHelper" to "helper"

[FX-3212]

BREAKING CHANGE: the value search.helper is what used to be search.mainHelper. search.mainHelper no longer exists. Use either search.helper now or search.mainIndex.getHelper()
  • Loading branch information
Haroenv committed Jan 9, 2025
1 parent 0eee57c commit 0bb5fcb
Show file tree
Hide file tree
Showing 21 changed files with 153 additions and 169 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,10 @@ describe('Composition implementation', () => {

search.start();

search.mainHelper?.searchForFacetValues('brand', 'algolia', 20);
search.helper?.searchForFacetValues('brand', 'algolia', 20);

expect(
search.mainHelper!.searchForCompositionFacetValues
search.helper!.searchForCompositionFacetValues
).toHaveBeenNthCalledWith(1, 'brand', 'algolia', 20);
});

Expand All @@ -97,10 +97,10 @@ describe('Composition implementation', () => {

search.start();

search.mainHelper?.searchForFacetValues('brand', 'algolia', 20);
search.helper?.searchForFacetValues('brand', 'algolia', 20);

expect(
search.mainHelper!.searchForCompositionFacetValues
search.helper!.searchForCompositionFacetValues
).not.toHaveBeenCalled();
});

Expand All @@ -116,7 +116,7 @@ describe('Composition implementation', () => {

await wait(0);

expect(search.mainHelper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(search.helper!.searchWithComposition).toHaveBeenCalledTimes(1);
});

describe('when performing a search', () => {
Expand All @@ -140,7 +140,7 @@ describe('Composition implementation', () => {

await wait(0);

expect(search.mainHelper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(search.helper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(searchClient.search).toHaveBeenNthCalledWith(1, {
compositionID: 'my-composition',
requestBody: { params: { query: '' } },
Expand All @@ -164,7 +164,7 @@ describe('Composition implementation', () => {

await wait(0);

expect(search.mainHelper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(search.helper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(searchClient.search).toHaveBeenNthCalledWith(1, {
compositionID: 'please-do-not-do-that',
requestBody: { params: { query: '' } },
Expand All @@ -191,7 +191,7 @@ describe('Composition implementation', () => {

await wait(0);

expect(search.mainHelper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(search.helper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(searchClient.search).toHaveBeenNthCalledWith(1, {
compositionID: 'my-composition',
requestBody: {
Expand Down Expand Up @@ -221,7 +221,7 @@ describe('Composition implementation', () => {

await wait(0);

expect(search.mainHelper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(search.helper!.searchWithComposition).toHaveBeenCalledTimes(1);
expect(searchClient.search).toHaveBeenNthCalledWith(1, {
compositionID: 'my-composition',
requestBody: {
Expand Down
60 changes: 28 additions & 32 deletions packages/instantsearch-core/src/__tests__/instantsearch.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ search.addWidgets([
See https://www.algolia.com/doc/api-reference/widgets/configure/js/`);
});

it("exposes helper's last results", async () => {
it("helper's results are null", async () => {
const searchClient = createSearchClient();

const search = new InstantSearch({
Expand All @@ -394,8 +394,7 @@ See https://www.algolia.com/doc/api-reference/widgets/configure/js/`);

await wait(0);

// could be null if we don't pretend the main helper is the one who searched
expect(search.helper!.lastResults).not.toBe(null);
expect(search.helper!.lastResults).toBe(null);
});

describe('insights middleware', () => {
Expand Down Expand Up @@ -822,9 +821,9 @@ describe('start', () => {

await wait(0);

expect(
search.mainHelper!.searchOnlyWithDerivedHelpers
).toHaveBeenCalledTimes(1);
expect(search.helper!.searchOnlyWithDerivedHelpers).toHaveBeenCalledTimes(
1
);
});

it('forwards the `initialUiState` to the main index', () => {
Expand Down Expand Up @@ -1004,7 +1003,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
`);
});

it('keeps a mainHelper already set on the instance (Vue SSR)', () => {
it('keeps a helper already set on the instance (Vue SSR)', () => {
const searchClient = createSearchClient();
const instance = new InstantSearch({
indexName: 'indexName',
Expand All @@ -1013,17 +1012,17 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear

const helper = algoliasearchHelper(searchClient, '');

// explicitly setting the mainHelper before start is used to force render to
// explicitly setting the helper before start is used to force render to
// happen before the results of the first search are done. We need to make
// sure no extra helper is created, as that can cause certain things (like routing)
// to be listening to the wrong helper.
instance.mainHelper = helper;
instance.helper = helper;

expect(instance.mainHelper).toBe(helper);
expect(instance.helper).toBe(helper);

instance.start();

expect(instance.mainHelper).toBe(helper);
expect(instance.helper).toBe(helper);
});

it('no query for root if indexName is not given', async () => {
Expand Down Expand Up @@ -1122,7 +1121,7 @@ describe('dispose', () => {
await wait(0);

// Simulate a search
search.mainHelper!.search();
search.helper!.search();

search.dispose();

Expand Down Expand Up @@ -1195,17 +1194,17 @@ describe('dispose', () => {

search.start();

const mainHelper = search.mainHelper!;
const helper = search.helper!;

mainHelper.on('searchQueueEmpty', onEventName);
helper.on('searchQueueEmpty', onEventName);

mainHelper.emit('searchQueueEmpty');
helper.emit('searchQueueEmpty');

expect(onEventName).toHaveBeenCalledTimes(1);

search.dispose();

mainHelper.emit('searchQueueEmpty');
helper.emit('searchQueueEmpty');

expect(onEventName).toHaveBeenCalledTimes(1);
});
Expand Down Expand Up @@ -1240,25 +1239,22 @@ describe('dispose', () => {
expect(onRender).toHaveBeenCalledTimes(2);
});

it('removes the Helpers references', () => {
it('removes the helper references', () => {
const search = new InstantSearch({
indexName: 'indexName',
searchClient: createSearchClient(),
});

search.start();

expect(search.mainHelper).not.toBe(null);
expect(search.helper).not.toBe(null);

search.dispose();

expect(search.mainHelper).toBe(null);
expect(search.helper).toBe(null);

search.start();

expect(search.mainHelper).not.toBe(null);
expect(search.helper).not.toBe(null);
});

Expand All @@ -1283,15 +1279,15 @@ describe('scheduleSearch', () => {

search.start();

const mainHelperSearch = jest.spyOn(search.mainHelper!, 'search');
const helperSearch = jest.spyOn(search.helper!, 'search');

search.scheduleSearch();

expect(mainHelperSearch).toHaveBeenCalledTimes(0);
expect(helperSearch).toHaveBeenCalledTimes(0);

await wait(0);

expect(mainHelperSearch).toHaveBeenCalledTimes(1);
expect(helperSearch).toHaveBeenCalledTimes(1);
});

it('deduplicates the calls to the `search` method', async () => {
Expand All @@ -1304,18 +1300,18 @@ describe('scheduleSearch', () => {

search.start();

const mainHelperSearch = jest.spyOn(search.mainHelper!, 'search');
const helperSearch = jest.spyOn(search.helper!, 'search');

search.scheduleSearch();
search.scheduleSearch();
search.scheduleSearch();
search.scheduleSearch();

expect(mainHelperSearch).toHaveBeenCalledTimes(0);
expect(helperSearch).toHaveBeenCalledTimes(0);

await wait(0);

expect(mainHelperSearch).toHaveBeenCalledTimes(1);
expect(helperSearch).toHaveBeenCalledTimes(1);
});
});

Expand Down Expand Up @@ -1418,7 +1414,7 @@ describe('scheduleStalledRender', () => {
castToJestMock(widget.render!).mockReset();

// Trigger a new search
search.mainHelper!.search();
search.helper!.search();

// search starts
await wait(0);
Expand Down Expand Up @@ -1456,10 +1452,10 @@ describe('scheduleStalledRender', () => {
castToJestMock(widget.render!).mockClear();

// Trigger multiple searches
search.mainHelper!.search();
search.mainHelper!.search();
search.mainHelper!.search();
search.mainHelper!.search();
search.helper!.search();
search.helper!.search();
search.helper!.search();
search.helper!.search();

await wait(0);

Expand Down Expand Up @@ -1507,7 +1503,7 @@ describe('scheduleStalledRender', () => {
);

// Trigger a new search
search.mainHelper!.search();
search.helper!.search();

expect(widget.render).toHaveBeenCalledTimes(1);
castToJestMock(widget.render!).mockClear();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ describe('connectGeoSearch', () => {
const widget = customGeoSearch({});

const instantSearchInstance = createInstantSearch();
const helper = instantSearchInstance.mainHelper!;
const helper = instantSearchInstance.helper!;

widget.init!(
createInitOptions({
Expand Down Expand Up @@ -160,7 +160,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/geo-search/
const widget = customGeoSearch({});

const instantSearchInstance = createInstantSearch();
const { mainHelper: helper } = instantSearchInstance;
const { helper } = instantSearchInstance;

widget.init!(createInitOptions({ instantSearchInstance }));

Expand Down
Loading

0 comments on commit 0bb5fcb

Please sign in to comment.