Skip to content

Commit 751fea1

Browse files
committed
adds first tests
1 parent 20ed7c9 commit 751fea1

File tree

4 files changed

+42
-20
lines changed

4 files changed

+42
-20
lines changed

packages/models-library/src/models_library/rpc/webserver/projects.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,30 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
4343
"examples": [
4444
{
4545
"uuid": "12345678-1234-5678-1234-123456789012",
46-
"name": "My project",
47-
"description": "My project description",
46+
"name": "A solver job",
47+
"description": "A description of a solver job with a single node",
4848
"workbench": {f"{uuid4()}": n for n in nodes_examples[2:3]},
4949
"created_at": "2023-01-01T00:00:00Z",
5050
"modified_at": "2023-01-01T00:00:00Z",
51-
"job_parent_resource_name": "solvers/slv_123/release/1.2.3",
51+
"job_parent_resource_name": "solvers/simcore%2Fservices%2Fcomp%2Fitis%2Fsleeper/releases/2.0.2",
52+
},
53+
{
54+
"uuid": "00000000-1234-5678-1234-123456789012",
55+
"name": "A study job",
56+
"description": "A description of a study job with many node",
57+
"workbench": {f"{uuid4()}": n for n in nodes_examples},
58+
"created_at": "2023-02-01T00:00:00Z",
59+
"modified_at": "2023-02-01T00:00:00Z",
60+
"job_parent_resource_name": "studies/96642f2a-a72c-11ef-8776-02420a00087d",
61+
},
62+
{
63+
"uuid": "00000000-0000-5678-1234-123456789012",
64+
"name": "A program job",
65+
"description": "A program of a solver job with a single node",
66+
"workbench": {f"{uuid4()}": n for n in nodes_examples[2:3]},
67+
"created_at": "2023-03-01T00:00:00Z",
68+
"modified_at": "2023-03-01T00:00:00Z",
69+
"job_parent_resource_name": "program/simcore%2Fservices%2Fdynamic%2Fjupyter/releases/5.0.2",
5270
},
5371
]
5472
}

packages/pytest-simcore/src/pytest_simcore/helpers/webserver_rpc_server.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,14 @@ async def list_projects_marked_as_jobs(
6868
assert not job_parent_resource_name_prefix.endswith("%")
6969
assert not job_parent_resource_name_prefix.startswith("%")
7070

71-
items = ProjectJobRpcGet.model_json_schema()["examples"]
71+
items = [
72+
item
73+
for item in ProjectJobRpcGet.model_json_schema()["examples"]
74+
if job_parent_resource_name_prefix is None
75+
or item.get("job_parent_resource_name").startswith(
76+
job_parent_resource_name_prefix
77+
)
78+
]
7279

7380
return PageRpcProjectJobRpcGet.create(
7481
items[offset : offset + limit],

services/api-server/tests/unit/api_solvers/test_api_routers_solvers_jobs_read.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from pytest_simcore.helpers.httpx_calls_capture_models import HttpApiCallCaptureModel
1313
from respx import MockRouter
1414
from simcore_service_api_server._meta import API_VTAG
15-
from simcore_service_api_server.api.dependencies import webserver_rpc
1615
from simcore_service_api_server.models.pagination import Page
1716
from simcore_service_api_server.models.schemas.jobs import Job
1817
from starlette import status
@@ -111,20 +110,17 @@ async def test_list_all_solvers_jobs(
111110

112111
# Basic assertions on the response structure
113112
assert isinstance(jobs_page.items, list)
114-
assert hasattr(jobs_page, "meta")
115-
assert hasattr(jobs_page.meta, "total")
113+
assert jobs_page.total > 0
114+
assert jobs_page.limit == 10
115+
assert jobs_page.offset == 0
116+
assert jobs_page.total <= len(jobs_page.items)
116117

117118
# Each job should have the expected structure
118119
for job in jobs_page.items:
119-
assert isinstance(job.id, str)
120-
assert isinstance(job.name, str)
121-
assert hasattr(job, "url")
122-
123-
# Verify interactions with backend services
124-
# These will need to be adjusted based on how the endpoint is implemented
125-
# For now, we can assume it might use the solver_service's list_jobs method
126-
127-
# Additional tests could include:
128-
# - Testing pagination by retrieving different pages
129-
# - Testing with different limit/offset parameters
130-
# - Checking that jobs from different solvers are included
120+
assert job.id
121+
assert job.name
122+
assert job.url is not None
123+
assert job.runner_url is not None
124+
assert job.outputs_url is not None
125+
126+
assert mocked_backend.webserver_rpc["list_projects_marked_as_jobs"].called

services/api-server/tests/unit/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
from simcore_service_api_server.core.settings import ApplicationSettings
5151
from simcore_service_api_server.repository.api_keys import UserAndProductTuple
5252
from simcore_service_api_server.services_http.solver_job_outputs import ResultsTypes
53+
from simcore_service_api_server.services_rpc.wb_api_server import WbApiRpcClient
5354

5455

5556
@pytest.fixture
@@ -245,7 +246,7 @@ def _get_rabbitmq_rpc_client_override():
245246
return mocker.MagicMock()
246247

247248
async def _get_wb_api_rpc_client_override():
248-
return mocker.AsyncMock()
249+
return WbApiRpcClient(_client=mocker.MagicMock())
249250

250251
app.dependency_overrides[get_rabbitmq_rpc_client] = (
251252
_get_rabbitmq_rpc_client_override

0 commit comments

Comments
 (0)