diff --git a/packages/headless/src/features/commerce/common/actions.test.ts b/packages/headless/src/features/commerce/common/actions.test.ts index 62e53a3ca55..752ff4fa750 100644 --- a/packages/headless/src/features/commerce/common/actions.test.ts +++ b/packages/headless/src/features/commerce/common/actions.test.ts @@ -530,4 +530,42 @@ describe('commerce common actions', () => { }); }); }); + + describe('#buildInstantProductsAPIRequest', () => { + let state: Actions.ListingAndSearchStateNeededByQueryCommerceAPI; + let mockedBuildInstantProductsAPIRequest: MockInstance; + + beforeEach(() => { + vi.clearAllMocks(); + state = buildMockCommerceState(); + mockedBuildInstantProductsAPIRequest = vi.spyOn( + Actions, + 'buildInstantProductsAPIRequest' + ); + }); + + it('given a state that has commercePagination, returns request without it', () => { + state.commercePagination = { + principal: { + page: 1, + perPage: 10, + totalEntries: 50, + totalPages: 5, + }, + recommendations: {}, + }; + + const request = Actions.buildInstantProductsAPIRequest( + state, + navigatorContext + ); + + expect(mockedBuildInstantProductsAPIRequest).toHaveBeenCalledWith( + state, + navigatorContext + ); + + expect(request.page).toEqual(undefined); + }); + }); }); diff --git a/packages/headless/src/features/commerce/common/actions.ts b/packages/headless/src/features/commerce/common/actions.ts index d304a2b30c0..3012999e2e4 100644 --- a/packages/headless/src/features/commerce/common/actions.ts +++ b/packages/headless/src/features/commerce/common/actions.ts @@ -53,6 +53,16 @@ export const buildCommerceAPIRequest = ( }; }; +export const buildInstantProductsAPIRequest = ( + state: ListingAndSearchStateNeededByQueryCommerceAPI, + navigatorContext: NavigatorContext +): CommerceAPIRequest => { + const {commercePagination, ...restState} = state; + return { + ...buildCommerceAPIRequest(restState, navigatorContext), + }; +}; + export const buildBaseCommerceAPIRequest = ( state: StateNeededByQueryCommerceAPI, navigatorContext: NavigatorContext, diff --git a/packages/headless/src/features/commerce/search/search-actions.ts b/packages/headless/src/features/commerce/search/search-actions.ts index 8e6644ca517..6745cef332d 100644 --- a/packages/headless/src/features/commerce/search/search-actions.ts +++ b/packages/headless/src/features/commerce/search/search-actions.ts @@ -8,7 +8,10 @@ import {ChildProduct} from '../../../api/commerce/common/product.js'; import {SearchCommerceSuccessResponse} from '../../../api/commerce/search/response.js'; import {validatePayload} from '../../../utils/validate-payload.js'; import {deselectAllNonBreadcrumbs} from '../../breadcrumb/breadcrumb-actions.js'; -import {buildCommerceAPIRequest} from '../common/actions.js'; +import { + buildCommerceAPIRequest, + buildInstantProductsAPIRequest, +} from '../common/actions.js'; import { clearAllCoreFacets, updateAutoSelectionForAllCoreFacets, @@ -155,7 +158,7 @@ export const fetchInstantProducts = createAsyncThunk< const {apiClient, navigatorContext} = extra; const {q} = payload; const fetched = await apiClient.productSuggestions({ - ...buildCommerceAPIRequest(state, navigatorContext), + ...buildInstantProductsAPIRequest(state, navigatorContext), query: q, });