55# pylint: disable=unused-argument
66# pylint: disable=unused-variable
77
8+ import datetime
89from collections .abc import Awaitable , Callable
910
1011import pytest
@@ -101,14 +102,38 @@ async def test_create(
101102 use_on_demand_clusters = faker .pybool (),
102103 )
103104
104- await CompRunsRepository (aiopg_engine ).create (
105+ created = await CompRunsRepository (aiopg_engine ).create (
106+ user_id = published_project .user ["id" ],
107+ project_id = published_project .project .uuid ,
108+ cluster_id = DEFAULT_CLUSTER_ID ,
109+ iteration = None ,
110+ metadata = run_metadata ,
111+ use_on_demand_clusters = faker .pybool (),
112+ )
113+ got = await CompRunsRepository (aiopg_engine ).get (
114+ user_id = published_project .user ["id" ],
115+ project_id = published_project .project .uuid ,
116+ )
117+ assert created == got
118+
119+ # creating a second one auto increment the iteration
120+ created = await CompRunsRepository (aiopg_engine ).create (
105121 user_id = published_project .user ["id" ],
106122 project_id = published_project .project .uuid ,
107123 cluster_id = DEFAULT_CLUSTER_ID ,
108124 iteration = None ,
109125 metadata = run_metadata ,
110126 use_on_demand_clusters = faker .pybool (),
111127 )
128+ assert created != got
129+ assert created .iteration == got .iteration + 1
130+
131+ # getting without specifying the iteration returns the latest
132+ got = await CompRunsRepository (aiopg_engine ).get (
133+ user_id = published_project .user ["id" ],
134+ project_id = published_project .project .uuid ,
135+ )
136+ assert created == got
112137
113138 with pytest .raises (ClusterNotFoundError ):
114139 await CompRunsRepository (aiopg_engine ).create (
@@ -130,8 +155,46 @@ async def test_create(
130155 )
131156
132157
133- async def test_update (aiopg_engine ):
134- ...
158+ async def test_update (
159+ aiopg_engine ,
160+ fake_user_id : UserID ,
161+ fake_project_id : ProjectID ,
162+ run_metadata : RunMetadataDict ,
163+ faker : Faker ,
164+ publish_project : Callable [[], Awaitable [PublishedProject ]],
165+ ):
166+ # this updates nothing but also does not complain
167+ updated = await CompRunsRepository (aiopg_engine ).update (
168+ fake_user_id , fake_project_id , faker .pyint (min_value = 1 )
169+ )
170+ assert updated is None
171+ # now let's create a valid one
172+ published_project = await publish_project ()
173+ created = await CompRunsRepository (aiopg_engine ).create (
174+ user_id = published_project .user ["id" ],
175+ project_id = published_project .project .uuid ,
176+ cluster_id = DEFAULT_CLUSTER_ID ,
177+ iteration = None ,
178+ metadata = run_metadata ,
179+ use_on_demand_clusters = faker .pybool (),
180+ )
181+
182+ got = await CompRunsRepository (aiopg_engine ).get (
183+ user_id = published_project .user ["id" ],
184+ project_id = published_project .project .uuid ,
185+ )
186+ assert created == got
187+
188+ updated = await CompRunsRepository (aiopg_engine ).update (
189+ created .user_id ,
190+ created .project_uuid ,
191+ created .iteration ,
192+ scheduled = datetime .datetime .now (datetime .UTC ),
193+ )
194+ assert updated is not None
195+ assert created != updated
196+ assert created .scheduled is None
197+ assert updated .scheduled is not None
135198
136199
137200async def test_delete (aiopg_engine ):
0 commit comments