Skip to content

Commit c7f6bdb

Browse files
fix tests
1 parent 00e6d21 commit c7f6bdb

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

services/resource-usage-tracker/src/simcore_service_resource_usage_tracker/api/rpc/_service_runs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# pylint: disable=too-many-arguments
12
from fastapi import FastAPI
23
from models_library.api_schemas_resource_usage_tracker.service_runs import (
34
OsparcCreditsAggregatedUsagesPage,

services/web/server/src/simcore_service_webserver/projects/_states_handlers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
ProjectNotFoundError,
4646
ProjectStartsTooManyDynamicNodesError,
4747
ProjectTooManyProjectOpenedError,
48+
ProjectWalletDebtError,
4849
)
4950

5051
_logger = logging.getLogger(__name__)
@@ -75,7 +76,7 @@ async def _wrapper(request: web.Request) -> web.StreamResponse:
7576
except ProjectTooManyProjectOpenedError as exc:
7677
raise web.HTTPConflict(reason=f"{exc}") from exc
7778

78-
except WalletNotEnoughCreditsError as exc:
79+
except (WalletNotEnoughCreditsError, ProjectWalletDebtError) as exc:
7980
raise web.HTTPPaymentRequired(reason=f"{exc}") from exc
8081

8182
return _wrapper

services/web/server/tests/unit/with_dbs/02/test_projects_wallet_handlers.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,20 @@
66
# pylint: disable=too-many-statements
77

88
from collections.abc import Iterator
9+
from decimal import Decimal
910
from http import HTTPStatus
1011

1112
import pytest
1213
import sqlalchemy as sa
1314
from aiohttp.test_utils import TestClient
15+
from models_library.api_schemas_resource_usage_tracker.credit_transactions import (
16+
WalletTotalCredits,
17+
)
18+
from models_library.api_schemas_resource_usage_tracker.service_runs import (
19+
ServiceRunPage,
20+
)
1421
from models_library.api_schemas_webserver.wallets import WalletGet
22+
from pytest_mock import MockerFixture
1523
from pytest_simcore.helpers.assert_checks import assert_status
1624
from pytest_simcore.helpers.webserver_login import LoggedUser, UserInfoDict
1725
from servicelib.aiohttp import status
@@ -97,13 +105,37 @@ def setup_wallets_db(
97105
con.execute(wallets.delete())
98106

99107

108+
@pytest.fixture
109+
def mock_get_project_wallet_total_credits(
110+
mocker: MockerFixture, setup_wallets_db: list[WalletGet]
111+
):
112+
mocker.patch(
113+
"simcore_service_webserver.projects._wallets_api.credit_transactions.get_project_wallet_total_credits",
114+
spec=True,
115+
return_value=WalletTotalCredits(
116+
wallet_id=setup_wallets_db[0].wallet_id, available_osparc_credits=Decimal(0)
117+
),
118+
)
119+
120+
121+
@pytest.fixture
122+
def mock_get_service_run_page(mocker: MockerFixture):
123+
mocker.patch(
124+
"simcore_service_webserver.projects._wallets_api.service_runs.get_service_run_page",
125+
spec=True,
126+
return_value=ServiceRunPage(items=[], total=0),
127+
)
128+
129+
100130
@pytest.mark.parametrize("user_role,expected", [(UserRole.USER, status.HTTP_200_OK)])
101131
async def test_project_wallets_full_workflow(
102132
client: TestClient,
103133
logged_user: UserInfoDict,
104134
user_project: ProjectDict,
105135
expected: HTTPStatus,
106136
setup_wallets_db: list[WalletGet],
137+
mock_get_project_wallet_total_credits: None,
138+
mock_get_service_run_page: None,
107139
):
108140
assert client.app
109141

0 commit comments

Comments
 (0)