@@ -310,19 +310,39 @@ async def _get_task_status(
310310 )
311311
312312
313- @pytest .mark .parametrize ("job_outputs" , [{"X+Y" : 42 , "X-Y" : 10 }])
313+ @pytest .mark .parametrize (
314+ "job_outputs, project_job_id" ,
315+ [
316+ (None , None ),
317+ ({"X+Y" : 42 , "X-Y" : 10 }, ProjectID (_faker .uuid4 ())),
318+ ],
319+ )
314320async def test_get_function_job_outputs (
315321 client : AsyncClient ,
316322 mock_handler_in_functions_rpc_interface : Callable [[str , Any ], None ],
317323 mock_registered_project_function_job : RegisteredProjectFunctionJob ,
318324 mock_registered_project_function : RegisteredProjectFunction ,
319325 mocked_webserver_rpc_api : dict [str , MockType ],
320326 auth : httpx .BasicAuth ,
321- job_outputs : dict [str , Any ],
327+ job_outputs : dict [str , Any ] | None ,
328+ project_job_id : ProjectID | None ,
322329) -> None :
323330
331+ _expected_return_status = (
332+ status .HTTP_404_NOT_FOUND
333+ if project_job_id is None and job_outputs is None
334+ else status .HTTP_200_OK
335+ )
336+
324337 mock_handler_in_functions_rpc_interface (
325- "get_function_job" , mock_registered_project_function_job
338+ "get_function_job" ,
339+ mock_registered_project_function_job .model_copy (
340+ update = {
341+ "user_id" : ANY ,
342+ "project_job_id" : project_job_id ,
343+ "job_creation_task_id" : None ,
344+ }
345+ ),
326346 )
327347 mock_handler_in_functions_rpc_interface (
328348 "get_function" , mock_registered_project_function
@@ -333,6 +353,7 @@ async def test_get_function_job_outputs(
333353 f"{ API_VTAG } /function_jobs/{ mock_registered_project_function_job .uid } /outputs" ,
334354 auth = auth ,
335355 )
336- assert response .status_code == status .HTTP_200_OK
337- data = response .json ()
338- assert data == job_outputs
356+ assert response .status_code == _expected_return_status
357+ if response .status_code == status .HTTP_200_OK :
358+ data = response .json ()
359+ assert data == job_outputs
0 commit comments