@@ -29,16 +29,49 @@ async fn test_get_recommendations_excludes_trending_facets_and_parses_hits() {
2929 let client = RecommendClient :: with_base_url ( "APPID" , "KEY" , server. base_url ( ) )
3030 . with_default_object_id ( "obj-1" ) ;
3131
32+ use algolia_recommend_rs:: models:: RecommendRequest ;
33+
34+ let requests = vec ! [
35+ RecommendRequest {
36+ index_name: "products" . to_string( ) ,
37+ model: Model :: BoughtTogether ,
38+ object_id: Some ( "obj-1" . to_string( ) ) ,
39+ threshold: Some ( 0 ) ,
40+ max_recommendations: None ,
41+ facet_name: None ,
42+ query_parameters: None ,
43+ } ,
44+ RecommendRequest {
45+ index_name: "products" . to_string( ) ,
46+ model: Model :: RelatedProducts ,
47+ object_id: Some ( "obj-1" . to_string( ) ) ,
48+ threshold: Some ( 0 ) ,
49+ max_recommendations: None ,
50+ facet_name: None ,
51+ query_parameters: None ,
52+ } ,
53+ RecommendRequest {
54+ index_name: "products" . to_string( ) ,
55+ model: Model :: TrendingItems ,
56+ object_id: None ,
57+ threshold: Some ( 0 ) ,
58+ max_recommendations: None ,
59+ facet_name: None ,
60+ query_parameters: None ,
61+ } ,
62+ RecommendRequest {
63+ index_name: "products" . to_string( ) ,
64+ model: Model :: LookingSimilar ,
65+ object_id: Some ( "obj-1" . to_string( ) ) ,
66+ threshold: Some ( 0 ) ,
67+ max_recommendations: None ,
68+ facet_name: None ,
69+ query_parameters: None ,
70+ } ,
71+ ] ;
72+
3273 let resp = client
33- . get_recommendations :: < Product > (
34- "products" ,
35- vec ! [
36- Model :: BoughtTogether ,
37- Model :: RelatedProducts ,
38- Model :: TrendingItems ,
39- Model :: LookingSimilar ,
40- ] ,
41- )
74+ . get_recommendations :: < Product > ( requests)
4275 . await
4376 . expect ( "request ok" ) ;
4477
@@ -95,8 +128,20 @@ async fn test_non_2xx_api_error_is_mapped() {
95128
96129 let client = RecommendClient :: with_base_url ( "APPID" , "KEY" , server. base_url ( ) ) ;
97130
131+ use algolia_recommend_rs:: models:: RecommendRequest ;
132+
133+ let requests = vec ! [ RecommendRequest {
134+ index_name: "products" . to_string( ) ,
135+ model: Model :: TrendingItems ,
136+ object_id: None ,
137+ threshold: Some ( 0 ) ,
138+ max_recommendations: None ,
139+ facet_name: None ,
140+ query_parameters: None ,
141+ } ] ;
142+
98143 let err = client
99- . get_recommendations :: < Product > ( "products" , vec ! [ Model :: TrendingItems ] )
144+ . get_recommendations :: < Product > ( requests )
100145 . await
101146 . expect_err ( "should error" ) ;
102147
@@ -118,8 +163,20 @@ async fn test_malformed_json_yields_serde_error() {
118163
119164 let client = RecommendClient :: with_base_url ( "APPID" , "KEY" , server. base_url ( ) ) ;
120165
166+ use algolia_recommend_rs:: models:: RecommendRequest ;
167+
168+ let requests = vec ! [ RecommendRequest {
169+ index_name: "products" . to_string( ) ,
170+ model: Model :: TrendingItems ,
171+ object_id: None ,
172+ threshold: Some ( 0 ) ,
173+ max_recommendations: None ,
174+ facet_name: None ,
175+ query_parameters: None ,
176+ } ] ;
177+
121178 let err = client
122- . get_recommendations :: < Product > ( "products" , vec ! [ Model :: TrendingItems ] )
179+ . get_recommendations :: < Product > ( requests )
123180 . await
124181 . expect_err ( "should error" ) ;
125182
@@ -155,8 +212,20 @@ async fn test_retry_on_5xx_then_succeed_on_next_host() {
155212 let hosts = vec ! [ primary. base_url( ) , fallback. base_url( ) ] ;
156213 let client = RecommendClient :: with_hosts ( "APPID" , "KEY" , hosts) . with_default_object_id ( "obj-1" ) ;
157214
215+ use algolia_recommend_rs:: models:: RecommendRequest ;
216+
217+ let requests = vec ! [ RecommendRequest {
218+ index_name: "products" . to_string( ) ,
219+ model: Model :: TrendingItems ,
220+ object_id: None ,
221+ threshold: Some ( 0 ) ,
222+ max_recommendations: None ,
223+ facet_name: None ,
224+ query_parameters: None ,
225+ } ] ;
226+
158227 let resp = client
159- . get_recommendations :: < Product > ( "products" , vec ! [ Model :: TrendingItems ] )
228+ . get_recommendations :: < Product > ( requests )
160229 . await
161230 . expect ( "request ok after retry" ) ;
162231
@@ -185,8 +254,20 @@ async fn test_retry_on_network_error_then_succeed() {
185254 let hosts = vec ! [ bad_host, ok_server. base_url( ) ] ;
186255 let client = RecommendClient :: with_hosts ( "APPID" , "KEY" , hosts) . with_default_object_id ( "obj-1" ) ;
187256
257+ use algolia_recommend_rs:: models:: RecommendRequest ;
258+
259+ let requests = vec ! [ RecommendRequest {
260+ index_name: "products" . to_string( ) ,
261+ model: Model :: TrendingItems ,
262+ object_id: None ,
263+ threshold: Some ( 0 ) ,
264+ max_recommendations: None ,
265+ facet_name: None ,
266+ query_parameters: None ,
267+ } ] ;
268+
188269 let resp = client
189- . get_recommendations :: < Product > ( "products" , vec ! [ Model :: TrendingItems ] )
270+ . get_recommendations :: < Product > ( requests )
190271 . await
191272 . expect ( "request ok after network retry" ) ;
192273
@@ -219,8 +300,20 @@ async fn test_non_retryable_4xx_does_not_try_next_host() {
219300 let hosts = vec ! [ first. base_url( ) , second. base_url( ) ] ;
220301 let client = RecommendClient :: with_hosts ( "APPID" , "KEY" , hosts) . with_default_object_id ( "obj-1" ) ;
221302
303+ use algolia_recommend_rs:: models:: RecommendRequest ;
304+
305+ let requests = vec ! [ RecommendRequest {
306+ index_name: "products" . to_string( ) ,
307+ model: Model :: TrendingItems ,
308+ object_id: None ,
309+ threshold: Some ( 0 ) ,
310+ max_recommendations: None ,
311+ facet_name: None ,
312+ query_parameters: None ,
313+ } ] ;
314+
222315 let err = client
223- . get_recommendations :: < Product > ( "products" , vec ! [ Model :: TrendingItems ] )
316+ . get_recommendations :: < Product > ( requests )
224317 . await
225318 . expect_err ( "should fail with 400 and not retry" ) ;
226319
0 commit comments