|
5 | 5 | # pylint: disable=unused-argument |
6 | 6 | # pylint: disable=unused-variable |
7 | 7 |
|
8 | | -from typing import Awaitable, Callable |
| 8 | +from collections.abc import Awaitable, Callable |
9 | 9 |
|
10 | 10 | import pytest |
11 | 11 | from _helpers import PublishedProject |
12 | 12 | from faker import Faker |
| 13 | +from models_library.clusters import DEFAULT_CLUSTER_ID, Cluster |
13 | 14 | from models_library.projects import ProjectID |
14 | 15 | from models_library.users import UserID |
15 | | -from simcore_service_director_v2.core.errors import ComputationalRunNotFoundError |
16 | | -from simcore_service_director_v2.models.comp_runs import CompRunsAtDB |
| 16 | +from simcore_service_director_v2.core.errors import ( |
| 17 | + ClusterNotFoundError, |
| 18 | + ComputationalRunNotFoundError, |
| 19 | + ProjectNotFoundError, |
| 20 | + UserNotFoundError, |
| 21 | +) |
| 22 | +from simcore_service_director_v2.models.comp_runs import CompRunsAtDB, RunMetadataDict |
17 | 23 | from simcore_service_director_v2.modules.db.repositories.comp_runs import ( |
18 | 24 | CompRunsRepository, |
19 | 25 | ) |
@@ -54,39 +60,95 @@ async def test_get( |
54 | 60 | published_project.project.prj_owner, published_project.project.uuid |
55 | 61 | ) |
56 | 62 |
|
57 | | - comp_run = await create_comp_run(published_project.user, published_project.project) |
| 63 | + await create_comp_run(published_project.user, published_project.project) |
58 | 64 | await CompRunsRepository(aiopg_engine).get( |
59 | 65 | published_project.project.prj_owner, published_project.project.uuid |
60 | 66 | ) |
61 | 67 |
|
62 | 68 |
|
63 | | -async def test_list(): |
64 | | - ... |
| 69 | +async def test_list( |
| 70 | + aiopg_engine, |
| 71 | +): |
| 72 | + assert await CompRunsRepository(aiopg_engine).list() == [] |
65 | 73 |
|
66 | 74 |
|
67 | | -async def test_create(): |
68 | | - ... |
| 75 | +async def test_create( |
| 76 | + aiopg_engine, |
| 77 | + fake_user_id: UserID, |
| 78 | + fake_project_id: ProjectID, |
| 79 | + run_metadata: RunMetadataDict, |
| 80 | + faker: Faker, |
| 81 | + publish_project: Callable[[], Awaitable[PublishedProject]], |
| 82 | + create_cluster: Callable[..., Awaitable[Cluster]], |
| 83 | +): |
| 84 | + with pytest.raises(ProjectNotFoundError): |
| 85 | + await CompRunsRepository(aiopg_engine).create( |
| 86 | + user_id=fake_user_id, |
| 87 | + project_id=fake_project_id, |
| 88 | + cluster_id=DEFAULT_CLUSTER_ID, |
| 89 | + iteration=None, |
| 90 | + metadata=run_metadata, |
| 91 | + use_on_demand_clusters=faker.pybool(), |
| 92 | + ) |
| 93 | + published_project = await publish_project() |
| 94 | + with pytest.raises(UserNotFoundError): |
| 95 | + await CompRunsRepository(aiopg_engine).create( |
| 96 | + user_id=fake_user_id, |
| 97 | + project_id=published_project.project.uuid, |
| 98 | + cluster_id=DEFAULT_CLUSTER_ID, |
| 99 | + iteration=None, |
| 100 | + metadata=run_metadata, |
| 101 | + use_on_demand_clusters=faker.pybool(), |
| 102 | + ) |
| 103 | + |
| 104 | + await CompRunsRepository(aiopg_engine).create( |
| 105 | + user_id=published_project.user["id"], |
| 106 | + project_id=published_project.project.uuid, |
| 107 | + cluster_id=DEFAULT_CLUSTER_ID, |
| 108 | + iteration=None, |
| 109 | + metadata=run_metadata, |
| 110 | + use_on_demand_clusters=faker.pybool(), |
| 111 | + ) |
| 112 | + |
| 113 | + with pytest.raises(ClusterNotFoundError): |
| 114 | + await CompRunsRepository(aiopg_engine).create( |
| 115 | + user_id=published_project.user["id"], |
| 116 | + project_id=published_project.project.uuid, |
| 117 | + cluster_id=faker.pyint(min_value=1), |
| 118 | + iteration=None, |
| 119 | + metadata=run_metadata, |
| 120 | + use_on_demand_clusters=faker.pybool(), |
| 121 | + ) |
| 122 | + cluster = await create_cluster(published_project.user) |
| 123 | + await CompRunsRepository(aiopg_engine).create( |
| 124 | + user_id=published_project.user["id"], |
| 125 | + project_id=published_project.project.uuid, |
| 126 | + cluster_id=cluster.id, |
| 127 | + iteration=None, |
| 128 | + metadata=run_metadata, |
| 129 | + use_on_demand_clusters=faker.pybool(), |
| 130 | + ) |
69 | 131 |
|
70 | 132 |
|
71 | | -async def test_update(): |
| 133 | +async def test_update(aiopg_engine): |
72 | 134 | ... |
73 | 135 |
|
74 | 136 |
|
75 | | -async def test_delete(): |
| 137 | +async def test_delete(aiopg_engine): |
76 | 138 | ... |
77 | 139 |
|
78 | 140 |
|
79 | | -async def test_set_run_result(): |
| 141 | +async def test_set_run_result(aiopg_engine): |
80 | 142 | ... |
81 | 143 |
|
82 | 144 |
|
83 | | -async def test_mark_for_cancellation(): |
| 145 | +async def test_mark_for_cancellation(aiopg_engine): |
84 | 146 | ... |
85 | 147 |
|
86 | 148 |
|
87 | | -async def test_mark_for_scheduling(): |
| 149 | +async def test_mark_for_scheduling(aiopg_engine): |
88 | 150 | ... |
89 | 151 |
|
90 | 152 |
|
91 | | -async def test_mark_scheduling_done(): |
| 153 | +async def test_mark_scheduling_done(aiopg_engine): |
92 | 154 | ... |
0 commit comments