1111 ProjectFunction ,
1212 ProjectFunctionJob ,
1313)
14- from models_library .functions import FunctionJobStatus
14+ from models_library .functions import FunctionJobCollection , FunctionJobStatus
1515from models_library .functions_errors import (
1616 FunctionJobIDNotFoundError ,
1717 FunctionJobReadAccessDeniedError ,
@@ -211,7 +211,7 @@ async def test_list_function_jobs(
211211 "user_role" ,
212212 [UserRole .USER ],
213213)
214- async def test_list_function_jobs_for_functionid (
214+ async def test_list_function_jobs_filtering (
215215 client : TestClient ,
216216 rpc_client : RabbitMQRPCClient ,
217217 mock_function : ProjectFunction ,
@@ -273,6 +273,19 @@ async def test_list_function_jobs_for_functionid(
273273 )
274274 )
275275
276+ function_job_collection = await functions_rpc .register_function_job_collection (
277+ rabbitmq_rpc_client = rpc_client ,
278+ function_job_collection = FunctionJobCollection (
279+ job_ids = [
280+ job .uid
281+ for job in first_registered_function_jobs [1 :2 ]
282+ + second_registered_function_jobs [0 :1 ]
283+ ]
284+ ),
285+ user_id = logged_user ["id" ],
286+ product_name = osparc_product_name ,
287+ )
288+
276289 # List function jobs for a specific function ID
277290 jobs , _ = await functions_rpc .list_function_jobs (
278291 rabbitmq_rpc_client = rpc_client ,
@@ -284,10 +297,58 @@ async def test_list_function_jobs_for_functionid(
284297 )
285298
286299 # Assert the list contains the registered job
287- assert len (jobs ) > 0
288300 assert len (jobs ) == 3
289301 assert all (j .function_uid == first_registered_function .uid for j in jobs )
290302
303+ # List function jobs for a specific function job IDs
304+ jobs , _ = await functions_rpc .list_function_jobs (
305+ rabbitmq_rpc_client = rpc_client ,
306+ pagination_limit = 10 ,
307+ pagination_offset = 0 ,
308+ filter_by_function_job_ids = [
309+ job .uid
310+ for job in first_registered_function_jobs [0 :1 ]
311+ + second_registered_function_jobs [1 :2 ]
312+ ],
313+ user_id = logged_user ["id" ],
314+ product_name = osparc_product_name ,
315+ )
316+
317+ # Assert the list contains the registered job
318+ assert len (jobs ) == 2
319+ assert jobs [0 ].uid == first_registered_function_jobs [0 ].uid
320+ assert jobs [1 ].uid == second_registered_function_jobs [1 ].uid
321+
322+ # List function jobs for a specific function job collection
323+ jobs , _ = await functions_rpc .list_function_jobs (
324+ rabbitmq_rpc_client = rpc_client ,
325+ pagination_limit = 10 ,
326+ pagination_offset = 0 ,
327+ filter_by_function_job_collection_id = function_job_collection .uid ,
328+ user_id = logged_user ["id" ],
329+ product_name = osparc_product_name ,
330+ )
331+
332+ # Assert the list contains the registered job
333+ assert len (jobs ) == 2
334+ assert jobs [0 ].uid == first_registered_function_jobs [1 ].uid
335+ assert jobs [1 ].uid == second_registered_function_jobs [0 ].uid
336+
337+ # List function jobs for a specific function job collection and function job id
338+ jobs , _ = await functions_rpc .list_function_jobs (
339+ rabbitmq_rpc_client = rpc_client ,
340+ pagination_limit = 10 ,
341+ pagination_offset = 0 ,
342+ filter_by_function_job_collection_id = function_job_collection .uid ,
343+ filter_by_function_job_ids = [first_registered_function_jobs [1 ].uid ],
344+ user_id = logged_user ["id" ],
345+ product_name = osparc_product_name ,
346+ )
347+
348+ # Assert the list contains the registered job
349+ assert len (jobs ) == 1
350+ assert jobs [0 ].uid == first_registered_function_jobs [1 ].uid
351+
291352
292353@pytest .mark .parametrize (
293354 "user_role" ,
0 commit comments