@@ -180,6 +180,7 @@ def test_search_add_image_conflict(mock_rpc):
180180 },
181181 )
182182 assert response .status_code == 409
183+ assert response .json () == {"detail" : "Image already inserted" }
183184 mock_rpc .assert_called_once_with (
184185 "insert_images" ,
185186 [
@@ -192,7 +193,7 @@ def test_search_add_image_conflict(mock_rpc):
192193 )
193194
194195
195- def test_search_success (mock_rpc ):
196+ def test_search_by_url_success (mock_rpc ):
196197 mock_rpc .return_value = [
197198 {
198199 "url" : "http://example.com/image1.jpg" ,
@@ -223,11 +224,11 @@ def test_search_success(mock_rpc):
223224 },
224225 ]
225226 mock_rpc .assert_called_once_with (
226- "search " , ["vit_b32" , "http://example.com/query.jpg" , 10 ]
227+ "search_by_url " , ["vit_b32" , "http://example.com/query.jpg" , 10 ]
227228 )
228229
229230
230- def test_search_success_with_limit (mock_rpc ):
231+ def test_search_by_url_success_with_limit (mock_rpc ):
231232 mock_rpc .return_value = [
232233 {
233234 "url" : "http://example.com/image1.jpg" ,
@@ -242,7 +243,7 @@ def test_search_success_with_limit(mock_rpc):
242243 assert response .status_code == 200
243244 assert len (response .json ()) == 100
244245 mock_rpc .assert_called_once_with (
245- "search " , ["vit_b32" , "http://example.com/query.jpg" , 100 ]
246+ "search_by_url " , ["vit_b32" , "http://example.com/query.jpg" , 100 ]
246247 )
247248
248249
@@ -255,20 +256,30 @@ def test_search_empty(mock_rpc):
255256 assert response .status_code == 200
256257 assert response .json () == []
257258 mock_rpc .assert_called_once_with (
258- "search " , ["vit_b32" , "http://example.com/query.jpg" , 10 ]
259+ "search_by_url " , ["vit_b32" , "http://example.com/query.jpg" , 10 ]
259260 )
260261
261262
262- def test_search_returns_422_when_invalid_url (mock_rpc ):
263+ def test_search_by_url_returns_422_when_invalid_url (mock_rpc ):
263264 response = client .post (
264265 "/models/vit_b32/search" ,
265266 json = {"url" : "not_a_url" },
266267 )
267268 assert response .status_code == 422
269+ assert response .json () == {
270+ "detail" : [
271+ {
272+ "loc" : ["body" , "url" ],
273+ "msg" : "invalid or missing URL scheme" ,
274+ "type" : "value_error.url.scheme" ,
275+ }
276+ ]
277+ }
278+
268279 mock_rpc .assert_not_called ()
269280
270281
271- def test_search_text_success (mock_rpc ):
282+ def test_search_by_text_success (mock_rpc ):
272283 mock_rpc .return_value = [
273284 {
274285 "url" : "http://example.com/image1.jpg" ,
@@ -298,7 +309,24 @@ def test_search_text_success(mock_rpc):
298309 "similarity" : 20 ,
299310 },
300311 ]
301- mock_rpc .assert_called_once_with ("text_search" , ["vit_b32" , "cute cat" , 10 ])
312+ mock_rpc .assert_called_once_with ("search_by_text" , ["vit_b32" , "cute cat" , 10 ])
313+
314+
315+ def test_search_by_text_success_with_limit (mock_rpc ):
316+ mock_rpc .return_value = [
317+ {
318+ "url" : "http://example.com/image1.jpg" ,
319+ "metadata" : {"tags" : ["cat" , "cute" ]},
320+ "similarity" : 10 ,
321+ }
322+ ] * 100
323+ response = client .post (
324+ "/models/vit_b32/search" ,
325+ json = {"text" : "some text" , "limit" : 100 },
326+ )
327+ assert response .status_code == 200
328+ assert len (response .json ()) == 100
329+ mock_rpc .assert_called_once_with ("search_by_text" , ["vit_b32" , "some text" , 100 ])
302330
303331
304332def test_search_returns_422_whithout_query (mock_rpc ):
@@ -319,7 +347,7 @@ def test_search_returns_500_when_rpc_error(mock_rpc):
319347 )
320348 assert response .status_code == 500
321349 mock_rpc .assert_called_once_with (
322- "search " , ["vit_b32" , "http://example.com/query.jpg" , 10 ]
350+ "search_by_url " , ["vit_b32" , "http://example.com/query.jpg" , 10 ]
323351 )
324352
325353
0 commit comments