Skip to content

Commit 166f1c4

Browse files
add unit tests to webserver
1 parent 0260db4 commit 166f1c4

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed

services/web/server/src/simcore_service_webserver/director_v2/_computations_service.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ async def list_computation_collection_runs(
321321
user_id: UserID,
322322
# filters
323323
filter_by_root_project_id: ProjectID | None = None,
324+
filter_only_running: bool = False,
324325
# pagination
325326
offset: int,
326327
limit: NonNegativeInt,
@@ -345,6 +346,7 @@ async def list_computation_collection_runs(
345346
product_name=product_name,
346347
user_id=user_id,
347348
project_ids=child_projects_with_root,
349+
filter_only_running=filter_only_running,
348350
offset=offset,
349351
limit=limit,
350352
)

services/web/server/src/simcore_service_webserver/director_v2/_controller/computations_rest.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,13 @@ async def list_computation_collection_runs(request: web.Request) -> web.Response
212212
)
213213
)
214214

215-
if query_params.filter_only_running is True:
216-
raise NotImplementedError
217-
218215
total, items = await _computations_service.list_computation_collection_runs(
219216
request.app,
220217
product_name=req_ctx.product_name,
221218
user_id=req_ctx.user_id,
222219
# filters
223220
filter_by_root_project_id=query_params.filter_by_root_project_id,
221+
filter_only_running=query_params.filter_only_running,
224222
# pagination
225223
offset=query_params.offset,
226224
limit=query_params.limit,

services/web/server/tests/unit/with_dbs/01/test_director_v2_handlers.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,54 @@ async def test_list_computation_collection_runs_with_client_defined_name(
389389
assert data[0]["name"] == "My Collection Run"
390390

391391

392+
@pytest.mark.parametrize(*standard_role_response(), ids=str)
393+
async def test_list_computation_collection_runs_with_filter_only_running(
394+
director_v2_service_mock: AioResponsesMock,
395+
user_project: ProjectDict,
396+
client: TestClient,
397+
logged_user: LoggedUser,
398+
user_role: UserRole,
399+
expected: ExpectedResponse,
400+
populated_comp_run_collection: None,
401+
mock_rpc_list_computation_collection_runs_page: None,
402+
):
403+
assert client.app
404+
url = client.app.router["list_computation_collection_runs"].url_for()
405+
query_parameters = {"filter_only_running": "true"}
406+
url_with_query = url.with_query(**query_parameters)
407+
resp = await client.get(f"{url_with_query}")
408+
data, _ = await assert_status(
409+
resp, status.HTTP_200_OK if user_role == UserRole.GUEST else expected.ok
410+
)
411+
if user_role != UserRole.ANONYMOUS:
412+
assert ComputationCollectionRunRestGet.model_validate(data[0])
413+
assert data[0]["name"] == "My Collection Run"
414+
415+
416+
@pytest.mark.parametrize(*standard_role_response(), ids=str)
417+
async def test_list_computation_collection_runs_with_filter_root_project(
418+
director_v2_service_mock: AioResponsesMock,
419+
user_project: ProjectDict,
420+
client: TestClient,
421+
logged_user: LoggedUser,
422+
user_role: UserRole,
423+
expected: ExpectedResponse,
424+
populated_comp_run_collection: None,
425+
mock_rpc_list_computation_collection_runs_page: None,
426+
):
427+
assert client.app
428+
url = client.app.router["list_computation_collection_runs"].url_for()
429+
query_parameters = {"filter_by_root_project_id": user_project["uuid"]}
430+
url_with_query = url.with_query(**query_parameters)
431+
resp = await client.get(f"{url_with_query}")
432+
data, _ = await assert_status(
433+
resp, status.HTTP_200_OK if user_role == UserRole.GUEST else expected.ok
434+
)
435+
if user_role != UserRole.ANONYMOUS:
436+
assert ComputationCollectionRunRestGet.model_validate(data[0])
437+
assert data[0]["name"] == "My Collection Run"
438+
439+
392440
@pytest.fixture
393441
async def populated_project_metadata(
394442
client: TestClient,
@@ -412,7 +460,7 @@ async def populated_project_metadata(
412460

413461

414462
@pytest.mark.parametrize(*standard_role_response(), ids=str)
415-
async def test_list_computation_collection_runs_and_tasks_with_different_names(
463+
async def test_list_computation_collection_runs_tasks_with_different_names(
416464
director_v2_service_mock: AioResponsesMock,
417465
user_project: ProjectDict,
418466
client: TestClient,

0 commit comments

Comments
 (0)