Skip to content

Commit 4257335

Browse files
committed
improve design of unittests
1 parent 5d0b7b5 commit 4257335

File tree

2 files changed

+50
-24
lines changed

2 files changed

+50
-24
lines changed

clients/python/test/test_osparc/conftest.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
import osparc
77
import pytest
88
from faker import Faker
9+
from pytest_mock import MockerFixture
10+
from urllib3 import HTTPResponse
11+
from pydantic import BaseModel
12+
from typing import Callable, Generator
913

1014

1115
@pytest.fixture
@@ -25,3 +29,27 @@ def api_client(cfg: osparc.Configuration) -> osparc.ApiClient:
2529
@pytest.fixture
2630
def dev_mode_enabled(monkeypatch: pytest.MonkeyPatch) -> None:
2731
monkeypatch.setenv("OSPARC_DEV_FEATURES_ENABLED", "1")
32+
33+
34+
@pytest.fixture
35+
def create_server_mock(
36+
mocker: MockerFixture,
37+
) -> Generator[Callable[[int, BaseModel], None], None, None]:
38+
def _mock_server(_status: int, _body: BaseModel) -> None:
39+
def _sideeffect(
40+
method: str,
41+
url: str,
42+
body=None,
43+
fields=None,
44+
headers=None,
45+
json=None,
46+
**urlopen_kw,
47+
) -> HTTPResponse:
48+
response = HTTPResponse(
49+
status=_status, body=_body.model_dump_json().encode()
50+
)
51+
return response
52+
53+
mocker.patch("urllib3.PoolManager.request", side_effect=_sideeffect)
54+
55+
yield _mock_server

clients/python/test/test_osparc/test_solvers_api.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,43 @@
11
import pytest
2-
from pytest_mock import MockerFixture
3-
from osparc import JobMetadata, ApiClient, SolversApi
2+
from osparc import JobMetadata, ApiClient, SolversApi, JobMetadataUpdate
43
from faker import Faker
5-
from urllib3 import HTTPResponse
4+
from typing import Callable
5+
from pydantic import BaseModel
66

77

88
@pytest.fixture
99
def job_metadata(faker: Faker) -> JobMetadata:
10-
_job_id = faker.uuid4()
10+
_job_id = f"{faker.uuid4()}"
1111
return JobMetadata(
12-
job_id=f"{_job_id}",
12+
job_id=_job_id,
1313
metadata={
1414
"job_id": _job_id,
15-
"job_name": faker.text(),
16-
"node_id": faker.uuid4(),
15+
"job_name": f"{faker.text()}",
16+
"node_id": f"{faker.uuid4()}",
1717
},
1818
url=faker.url(),
1919
)
2020

2121

22-
def test_job_metadata_serialization(
23-
mocker: MockerFixture,
22+
@pytest.fixture
23+
def job_metadata_update(faker: Faker):
24+
return JobMetadataUpdate(
25+
metadata={
26+
"var1": faker.boolean(),
27+
"var2": faker.pyfloat(),
28+
"var3": faker.pyint(),
29+
"var4": faker.text(),
30+
}
31+
)
32+
33+
34+
def test_get_job_custom_metadata(
35+
create_server_mock: Callable[[int, BaseModel], None],
2436
job_metadata: JobMetadata,
2537
api_client: ApiClient,
2638
faker: Faker,
2739
):
28-
def _get_job_sideeffect(
29-
method: str,
30-
url: str,
31-
body=None,
32-
fields=None,
33-
headers=None,
34-
json=None,
35-
**urlopen_kw,
36-
) -> HTTPResponse:
37-
response = HTTPResponse(
38-
status=200, body=job_metadata.model_dump_json().encode()
39-
)
40-
return response
41-
42-
mocker.patch("urllib3.PoolManager.request", side_effect=_get_job_sideeffect)
40+
create_server_mock(200, job_metadata)
4341

4442
_solvers_api = SolversApi(api_client=api_client)
4543
metadata = _solvers_api.get_job_custom_metadata(

0 commit comments

Comments
 (0)