Skip to content

Commit

Permalink
fix(recommend): Add Type RecommendQueriesResponse from old MultipleQu…
Browse files Browse the repository at this point in the history
…eriesResponse for recommend (#1472)
  • Loading branch information
raed667 committed Jul 20, 2023
1 parent a38a628 commit 36285b2
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 9 deletions.
37 changes: 35 additions & 2 deletions packages/recommend/src/__tests__/getRecommendations.test.ts
Expand Up @@ -2,9 +2,21 @@ import { TestSuite } from '../../../client-common/src/__tests__/TestSuite';

const recommend = new TestSuite('recommend').recommend;

function createMockedClient() {
function createMockedClient<TObject>() {
const client = recommend('appId', 'apiKey');
jest.spyOn(client.transporter, 'read').mockImplementation(() => Promise.resolve());
jest.spyOn(client.transporter, 'read').mockImplementation(() =>
Promise.resolve({
results: [
{
hits: [
{
objectID: '1',
},
],
},
],
})
);

return client;
}
Expand Down Expand Up @@ -197,4 +209,25 @@ describe('getRecommendations', () => {
{}
);
});

test('returns recommendations results', async () => {
const client = createMockedClient();

const recommendations = await client.getRecommendations<any>(
[
{
model: 'bought-together',
indexName: 'products',
objectID: 'B018APC4LE',
},
],
{}
);

expect(recommendations.results[0].hits).toEqual([
{
objectID: '1',
},
]);
});
});
21 changes: 14 additions & 7 deletions packages/recommend/src/types/WithRecommendMethods.ts
@@ -1,4 +1,4 @@
import { MultipleQueriesResponse, SearchOptions } from '@algolia/client-search';
import { SearchOptions, SearchResponse } from '@algolia/client-search';
import { RequestOptions } from '@algolia/transporter';

import { FrequentlyBoughtTogetherQuery } from './FrequentlyBoughtTogetherQuery';
Expand All @@ -9,52 +9,59 @@ import { TrendingFacetsQuery } from './TrendingFacetsQuery';
import { TrendingItemsQuery } from './TrendingItemsQuery';
import { TrendingQuery } from './TrendingQuery';

export type RecommendQueriesResponse<TObject> = {
/**
* The list of results.
*/
readonly results: ReadonlyArray<SearchResponse<TObject>>;
};

export type WithRecommendMethods<TType> = TType & {
/**
* Returns recommendations.
*/
readonly getRecommendations: <TObject>(
queries: ReadonlyArray<RecommendationsQuery | TrendingQuery>,
requestOptions?: RequestOptions & SearchOptions
) => Readonly<Promise<MultipleQueriesResponse<TObject>>>;
) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;

/**
* Returns [Related Products](https://algolia.com/doc/guides/algolia-ai/recommend/#related-products).
*/
readonly getRelatedProducts: <TObject>(
queries: readonly RelatedProductsQuery[],
requestOptions?: RequestOptions & SearchOptions
) => Readonly<Promise<MultipleQueriesResponse<TObject>>>;
) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;

/**
* Returns [Frequently Bought Together](https://algolia.com/doc/guides/algolia-ai/recommend/#frequently-bought-together) products.
*/
readonly getFrequentlyBoughtTogether: <TObject>(
queries: readonly FrequentlyBoughtTogetherQuery[],
requestOptions?: RequestOptions & SearchOptions
) => Readonly<Promise<MultipleQueriesResponse<TObject>>>;
) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;

/**
* Returns trending items
*/
readonly getTrendingItems: <TObject>(
queries: readonly TrendingItemsQuery[],
requestOptions?: RequestOptions & SearchOptions
) => Readonly<Promise<MultipleQueriesResponse<TObject>>>;
) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;

/**
* Returns trending items per facet
*/
readonly getTrendingFacets: <TObject>(
queries: readonly TrendingFacetsQuery[],
requestOptions?: RequestOptions & SearchOptions
) => Readonly<Promise<MultipleQueriesResponse<TObject>>>;
) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;

/**
* Returns Looking Similar
*/
readonly getLookingSimilar: <TObject>(
queries: readonly LookingSimilarQuery[],
requestOptions?: RequestOptions & SearchOptions
) => Readonly<Promise<MultipleQueriesResponse<TObject>>>;
) => Readonly<Promise<RecommendQueriesResponse<TObject>>>;
};

0 comments on commit 36285b2

Please sign in to comment.