@@ -170,6 +170,123 @@ defmodule Scheduler.Actions.ScheduleWfImpl.Test do
170
170
assert schedule_params . triggered_by == :SCHEDULE
171
171
end
172
172
173
+ test "schedule() - schedule params are correctly formed for gitlab in JustRun case" , ctx do
174
+ alias Scheduler.Actions.ScheduleWfImpl
175
+
176
+ use_mock_workflow_service ( )
177
+ mock_workflow_service_response ( "just_run" )
178
+ reset_mock_feature_service ( )
179
+ mock_feature_response ( "just_run" )
180
+ use_mock_project_service ( )
181
+ mock_projecthub_response ( "ok" )
182
+ use_mock_repository_service ( )
183
+ mock_repositoryhub_response ( "ok" )
184
+
185
+ ts_before = DateTime . utc_now ( )
186
+ timestamp = Timex . shift ( ts_before , minutes: - 1 )
187
+
188
+ periodic =
189
+ ctx . periodic
190
+ |> Periodics . changeset ( "v1.1" , % {
191
+ parameters: [
192
+ % { name: "param_gitlab1" , required: true , default_value: "value1" } ,
193
+ % { name: "param_gitlab2" , required: false , default_value: "value2" } ,
194
+ % { name: "param_gitlab3" , required: false , default_value: "value3" } ,
195
+ % { name: "param_gitlab4" , required: false }
196
+ ]
197
+ } )
198
+ |> Scheduler.PeriodicsRepo . update! ( )
199
+
200
+ assert { :ok , _pid } = ScheduleWfImpl . start_schedule_task ( ctx . periodic . id , timestamp )
201
+
202
+ :timer . sleep ( 2_000 )
203
+
204
+ assert { :ok , [ tr ] } = PTQueries . get_n_by_periodic_id ( ctx . periodic . id , 1 )
205
+
206
+ assert tr . scheduling_status == "passed"
207
+ assert tr . scheduled_workflow_id == "wf_id"
208
+ assert tr . error_description == nil
209
+
210
+ assert Map . new ( tr . parameter_values , & { & 1 . name , & 1 . value } ) ==
211
+ % {
212
+ "param_gitlab1" => "value1" ,
213
+ "param_gitlab2" => "value2" ,
214
+ "param_gitlab3" => "value3"
215
+ }
216
+
217
+ assert tr . attempts == 1
218
+
219
+ assert DateTime . compare ( tr . scheduled_at , ts_before ) == :gt
220
+
221
+ repository = % { id: UUID . uuid4 ( ) , integration_type: :GITLAB }
222
+
223
+ assert { :ok , schedule_params } =
224
+ ScheduleWfImpl . form_just_run_schedule_params ( periodic , tr , repository )
225
+
226
+ assert schedule_params . service == :GITLAB
227
+ assert schedule_params . requester_id == periodic . requester_id
228
+ assert schedule_params . triggered_by == :SCHEDULE
229
+ end
230
+
231
+ test "schedule() - schedule params are correctly formed for git agnostic in JustRun case" ,
232
+ ctx do
233
+ alias Scheduler.Actions.ScheduleWfImpl
234
+
235
+ use_mock_workflow_service ( )
236
+ mock_workflow_service_response ( "just_run" )
237
+ reset_mock_feature_service ( )
238
+ mock_feature_response ( "just_run" )
239
+ use_mock_project_service ( )
240
+ mock_projecthub_response ( "ok" )
241
+ use_mock_repository_service ( )
242
+ mock_repositoryhub_response ( "ok" )
243
+
244
+ ts_before = DateTime . utc_now ( )
245
+ timestamp = Timex . shift ( ts_before , minutes: - 1 )
246
+
247
+ periodic =
248
+ ctx . periodic
249
+ |> Periodics . changeset ( "v1.1" , % {
250
+ parameters: [
251
+ % { name: "param_git1" , required: true , default_value: "value1" } ,
252
+ % { name: "param_git2" , required: false , default_value: "value2" } ,
253
+ % { name: "param_git3" , required: false , default_value: "value3" } ,
254
+ % { name: "param_git4" , required: false }
255
+ ]
256
+ } )
257
+ |> Scheduler.PeriodicsRepo . update! ( )
258
+
259
+ assert { :ok , _pid } = ScheduleWfImpl . start_schedule_task ( ctx . periodic . id , timestamp )
260
+
261
+ :timer . sleep ( 2_000 )
262
+
263
+ assert { :ok , [ tr ] } = PTQueries . get_n_by_periodic_id ( ctx . periodic . id , 1 )
264
+
265
+ assert tr . scheduling_status == "passed"
266
+ assert tr . scheduled_workflow_id == "wf_id"
267
+ assert tr . error_description == nil
268
+
269
+ assert Map . new ( tr . parameter_values , & { & 1 . name , & 1 . value } ) ==
270
+ % {
271
+ "param_git1" => "value1" ,
272
+ "param_git2" => "value2" ,
273
+ "param_git3" => "value3"
274
+ }
275
+
276
+ assert tr . attempts == 1
277
+
278
+ assert DateTime . compare ( tr . scheduled_at , ts_before ) == :gt
279
+
280
+ repository = % { id: UUID . uuid4 ( ) , integration_type: :GIT }
281
+
282
+ assert { :ok , schedule_params } =
283
+ ScheduleWfImpl . form_just_run_schedule_params ( periodic , tr , repository )
284
+
285
+ assert schedule_params . service == :GIT
286
+ assert schedule_params . requester_id == periodic . requester_id
287
+ assert schedule_params . triggered_by == :SCHEDULE
288
+ end
289
+
173
290
test "schedule() - when project service fails for JustRun case then workflow is not scheduled" ,
174
291
ctx do
175
292
use_mock_workflow_service ( )
0 commit comments