Skip to content

Commit 7893ba1

Browse files
committed
parametrize patch function to also cover solver function jobs
1 parent dfd0e7a commit 7893ba1

File tree

1 file changed

+60
-23
lines changed

1 file changed

+60
-23
lines changed

services/web/server/tests/unit/with_dbs/04/functions/test_function_jobs_controller_rpc.py

Lines changed: 60 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@
1717
FunctionClass,
1818
FunctionJobCollection,
1919
FunctionJobStatus,
20+
RegisteredFunctionJob,
21+
RegisteredFunctionJobPatch,
2022
RegisteredProjectFunctionJobPatch,
23+
RegisteredSolverFunctionJobPatch,
24+
SolverFunctionJob,
2125
)
2226
from models_library.functions_errors import (
2327
FunctionJobIDNotFoundError,
@@ -442,6 +446,49 @@ async def test_find_cached_function_jobs(
442446
"user_role",
443447
[UserRole.USER],
444448
)
449+
@pytest.mark.parametrize(
450+
"function_job, patch",
451+
[
452+
(
453+
ProjectFunctionJob(
454+
function_uid=_faker.uuid4(),
455+
title="Test Function Job",
456+
description="A test function job",
457+
project_job_id=None,
458+
inputs=None,
459+
outputs=None,
460+
job_creation_task_id=None,
461+
),
462+
RegisteredProjectFunctionJobPatch(
463+
title=_faker.word(),
464+
description=_faker.sentence(),
465+
project_job_id=ProjectID(_faker.uuid4()),
466+
job_creation_task_id=TaskID(_faker.uuid4()),
467+
inputs={"input1": _faker.pyint(min_value=0, max_value=1000)},
468+
outputs={"output1": _faker.word()},
469+
),
470+
),
471+
(
472+
SolverFunctionJob(
473+
function_uid=_faker.uuid4(),
474+
title="Test Function Job",
475+
description="A test function job",
476+
inputs=None,
477+
outputs=None,
478+
job_creation_task_id=None,
479+
solver_job_id=None,
480+
),
481+
RegisteredSolverFunctionJobPatch(
482+
title=_faker.word(),
483+
description=_faker.sentence(),
484+
job_creation_task_id=TaskID(_faker.uuid4()),
485+
inputs={"input1": _faker.pyint(min_value=0, max_value=1000)},
486+
outputs={"output1": _faker.word()},
487+
solver_job_id=_faker.uuid4(),
488+
),
489+
),
490+
],
491+
)
445492
async def test_patch_registered_function_jobs(
446493
client: TestClient,
447494
rpc_client: RabbitMQRPCClient,
@@ -451,56 +498,46 @@ async def test_patch_registered_function_jobs(
451498
osparc_product_name: ProductName,
452499
mock_function_factory: Callable[[FunctionClass], Function],
453500
clean_functions: None,
501+
function_job: RegisteredFunctionJob,
502+
patch: RegisteredFunctionJobPatch,
454503
):
504+
function = mock_function_factory(function_job.function_class)
455505

456506
registered_function = await functions_rpc.register_function(
457507
rabbitmq_rpc_client=rpc_client,
458-
function=mock_function_factory(FunctionClass.PROJECT),
508+
function=function,
459509
user_id=logged_user["id"],
460510
product_name=osparc_product_name,
461511
)
462512

463-
function_job = ProjectFunctionJob(
464-
function_uid=registered_function.uid,
465-
title="Test Function Job",
466-
description="A test function job",
467-
project_job_id=None,
468-
inputs=None,
469-
outputs=None,
470-
job_creation_task_id=None,
471-
)
472-
473513
# Register the function job
514+
function_job.function_uid = registered_function.uid
474515
registered_job = await functions_rpc.register_function_job(
475516
rabbitmq_rpc_client=rpc_client,
476517
function_job=function_job,
477518
user_id=logged_user["id"],
478519
product_name=osparc_product_name,
479520
)
480521

481-
patch = RegisteredProjectFunctionJobPatch(
482-
title=_faker.word(),
483-
description=_faker.sentence(),
484-
project_job_id=ProjectID(_faker.uuid4()),
485-
job_creation_task_id=TaskID(_faker.uuid4()),
486-
inputs={"input1": _faker.pyint(min_value=0, max_value=1000)},
487-
outputs={"output1": _faker.word()},
488-
)
489-
490522
registered_job = await functions_rpc.patch_registered_function_job(
491523
rabbitmq_rpc_client=rpc_client,
492524
user_id=logged_user["id"],
493525
function_job_uuid=registered_job.uid,
494526
product_name=osparc_product_name,
495527
registered_function_job_patch=patch,
496528
)
497-
assert registered_job.function_class == FunctionClass.PROJECT
498529
assert registered_job.title == patch.title
499530
assert registered_job.description == patch.description
500531
assert registered_job.inputs == patch.inputs
501532
assert registered_job.outputs == patch.outputs
502-
assert registered_job.job_creation_task_id == patch.job_creation_task_id
503-
assert registered_job.project_job_id == patch.project_job_id
533+
if isinstance(patch, RegisteredProjectFunctionJobPatch):
534+
assert registered_job.function_class == FunctionClass.PROJECT
535+
assert registered_job.job_creation_task_id == patch.job_creation_task_id
536+
assert registered_job.project_job_id == patch.project_job_id
537+
if isinstance(patch, RegisteredSolverFunctionJobPatch):
538+
assert registered_job.function_class == FunctionClass.SOLVER
539+
assert registered_job.job_creation_task_id == patch.job_creation_task_id
540+
assert registered_job.solver_job_id == patch.solver_job_id
504541

505542

506543
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)