@@ -109,7 +109,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
109109 event_action: "issue_comment.created" ,
110110 user_type: :admin ,
111111 body: "/bounty $100" ,
112- params: % { "id" => comment_id }
112+ params: % { "comment" => % { " id" => comment_id } }
113113 }
114114 ] )
115115
@@ -123,7 +123,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
123123 event_action: "issue_comment.edited" ,
124124 user_type: :admin ,
125125 body: "/bounty $200" ,
126- params: % { "id" => comment_id }
126+ params: % { "comment" => % { " id" => comment_id } }
127127 }
128128 ] )
129129
@@ -138,7 +138,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
138138 event_action: "issue_comment.created" ,
139139 user_type: :admin ,
140140 body: "/bounty $100" ,
141- params: % { "id" => comment_id }
141+ params: % { "comment" => % { " id" => comment_id } }
142142 }
143143 ] )
144144
@@ -152,7 +152,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
152152 event_action: "issue_comment.created" ,
153153 user_type: :admin ,
154154 body: "/bounty $200" ,
155- params: % { "id" => comment_id + 1 }
155+ params: % { "comment" => % { " id" => comment_id + 1 } }
156156 }
157157 ] )
158158
@@ -170,13 +170,13 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
170170 event_action: "issue_comment.created" ,
171171 user_type: :admin ,
172172 body: "/bounty $100" ,
173- params: % { "number" => issue_number }
173+ params: % { "issue" => % { " number" => issue_number } }
174174 } ,
175175 % {
176176 event_action: "pull_request.opened" ,
177177 user_type: :unauthorized ,
178178 body: "/claim #{ issue_number } /split @jsmith /split @jdoe" ,
179- params: % { "number" => pr_number }
179+ params: % { "pull_request" => % { " number" => pr_number } }
180180 }
181181 ] )
182182
@@ -198,19 +198,19 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
198198 event_action: "issue_comment.created" ,
199199 user_type: :admin ,
200200 body: "/bounty $100" ,
201- params: % { "number" => issue_number }
201+ params: % { "issue" => % { " number" => issue_number } }
202202 } ,
203203 % {
204204 event_action: "pull_request.opened" ,
205205 user_type: :unauthorized ,
206206 body: "/claim #{ issue_number } " ,
207- params: % { "number" => pr_number }
207+ params: % { "pull_request" => % { " number" => pr_number } }
208208 } ,
209209 % {
210210 event_action: "pull_request.edited" ,
211211 user_type: :unauthorized ,
212212 body: "/claim #{ issue_number } " ,
213- params: % { "number" => pr_number }
213+ params: % { "pull_request" => % { " number" => pr_number } }
214214 }
215215 ] )
216216
@@ -227,13 +227,13 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
227227 event_action: "issue_comment.created" ,
228228 user_type: :admin ,
229229 body: "/bounty $100" ,
230- params: % { "number" => issue_number1 }
230+ params: % { "issue" => % { " number" => issue_number1 } }
231231 } ,
232232 % {
233233 event_action: "issue_comment.created" ,
234234 user_type: :admin ,
235235 body: "/bounty $100" ,
236- params: % { "number" => issue_number2 }
236+ params: % { "issue" => % { " number" => issue_number2 } }
237237 }
238238 ] )
239239
@@ -242,7 +242,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
242242 event_action: "pull_request.opened" ,
243243 user_type: :unauthorized ,
244244 body: "/claim #{ issue_number1 } /claim #{ issue_number2 } " ,
245- params: % { "number" => pr_number }
245+ params: % { "pull_request" => % { " number" => pr_number } }
246246 }
247247 ] )
248248
@@ -259,7 +259,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
259259 event_action: "issue_comment.created" ,
260260 user_type: :admin ,
261261 body: "/bounty $100" ,
262- params: % { "number" => issue_number1 }
262+ params: % { "issue" => % { " number" => issue_number1 } }
263263 }
264264 ] )
265265
@@ -268,7 +268,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
268268 event_action: "pull_request.opened" ,
269269 user_type: :unauthorized ,
270270 body: "/claim #{ issue_number1 } " ,
271- params: % { "number" => pr_number }
271+ params: % { "pull_request" => % { " number" => pr_number } }
272272 }
273273 ] )
274274
@@ -277,7 +277,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
277277 event_action: "pull_request.opened" ,
278278 user_type: :unauthorized ,
279279 body: "/claim #{ issue_number2 } " ,
280- params: % { "number" => pr_number }
280+ params: % { "pull_request" => % { " number" => pr_number } }
281281 }
282282 ] )
283283
@@ -297,7 +297,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
297297 event_action: "issue_comment.created" ,
298298 user_type: :admin ,
299299 body: "/bounty $100" ,
300- params: % { "number" => issue_number }
300+ params: % { "issue" => % { " number" => issue_number } }
301301 }
302302 ] )
303303
@@ -308,7 +308,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
308308 event_action: "pull_request.opened" ,
309309 user_type: :unauthorized ,
310310 body: "/claim #{ issue_number } " ,
311- params: % { "number" => pr_number }
311+ params: % { "pull_request" => % { " number" => pr_number } }
312312 }
313313 ] )
314314
@@ -320,7 +320,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
320320 event_action: "pull_request.edited" ,
321321 user_type: :unauthorized ,
322322 body: "/claim #{ issue_number } /split @jsmith" ,
323- params: % { "number" => pr_number }
323+ params: % { "pull_request" => % { " number" => pr_number } }
324324 }
325325 ] )
326326
@@ -337,7 +337,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
337337 event_action: "pull_request.edited" ,
338338 user_type: :unauthorized ,
339339 body: "/claim #{ issue_number } /split @jdoe" ,
340- params: % { "number" => pr_number }
340+ params: % { "pull_request" => % { " number" => pr_number } }
341341 }
342342 ] )
343343
@@ -356,7 +356,7 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
356356 event_action: "pull_request.edited" ,
357357 user_type: :unauthorized ,
358358 body: "" ,
359- params: % { "number" => pr_number }
359+ params: % { "pull_request" => % { " number" => pr_number } }
360360 }
361361 ] )
362362
@@ -378,19 +378,19 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
378378 event_action: "issue_comment.created" ,
379379 user_type: :admin ,
380380 body: "/bounty $100" ,
381- params: % { "number" => issue_number }
381+ params: % { "issue" => % { " number" => issue_number } }
382382 } ,
383383 % {
384384 event_action: "pull_request.opened" ,
385385 user_type: :unauthorized ,
386386 body: "/claim #{ issue_number } " ,
387- params: % { "number" => pr_number }
387+ params: % { "pull_request" => % { " number" => pr_number } }
388388 } ,
389389 % {
390390 event_action: "pull_request.closed" ,
391391 user_type: :unauthorized ,
392392 body: "/claim #{ issue_number } " ,
393- params: % { "number" => pr_number , "merged_at" => nil }
393+ params: % { "pull_request" => % { " number" => pr_number , "merged_at" => nil } }
394394 }
395395 ] )
396396
@@ -406,19 +406,19 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
406406 event_action: "issue_comment.created" ,
407407 user_type: :admin ,
408408 body: "/bounty $100" ,
409- params: % { "number" => issue_number }
409+ params: % { "issue" => % { " number" => issue_number } }
410410 } ,
411411 % {
412412 event_action: "pull_request.opened" ,
413413 user_type: :unauthorized ,
414414 body: "fixes #{ issue_number } " ,
415- params: % { "number" => pr_number }
415+ params: % { "pull_request" => % { " number" => pr_number } }
416416 } ,
417417 % {
418418 event_action: "pull_request.closed" ,
419419 user_type: :unauthorized ,
420420 body: "fixes #{ issue_number } " ,
421- params: % { "number" => pr_number , "merged_at" => DateTime . to_iso8601 ( DateTime . utc_now ( ) ) }
421+ params: % { "pull_request" => % { " number" => pr_number , "merged_at" => DateTime . to_iso8601 ( DateTime . utc_now ( ) ) } }
422422 }
423423 ] )
424424
@@ -434,19 +434,19 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
434434 event_action: "issue_comment.created" ,
435435 user_type: :admin ,
436436 body: "/bounty $100" ,
437- params: % { "number" => issue_number }
437+ params: % { "issue" => % { " number" => issue_number } }
438438 } ,
439439 % {
440440 event_action: "pull_request.opened" ,
441441 user_type: :unauthorized ,
442442 body: "/claim #{ issue_number } " ,
443- params: % { "number" => pr_number }
443+ params: % { "pull_request" => % { " number" => pr_number } }
444444 } ,
445445 % {
446446 event_action: "pull_request.closed" ,
447447 user_type: :unauthorized ,
448448 body: "/claim #{ issue_number } " ,
449- params: % { "number" => pr_number , "merged_at" => DateTime . to_iso8601 ( DateTime . utc_now ( ) ) }
449+ params: % { "pull_request" => % { " number" => pr_number , "merged_at" => DateTime . to_iso8601 ( DateTime . utc_now ( ) ) } }
450450 }
451451 ] )
452452
@@ -507,39 +507,53 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
507507 }
508508 end
509509
510+ defp merge_payload ( base_payload , params ) do
511+ Map . new ( base_payload , fn { key , base_value } ->
512+ case { base_value , get_in ( params || % { } , [ key ] ) } do
513+ { base_map , override_map } when is_map ( base_map ) and is_map ( override_map ) ->
514+ { key , Map . merge ( base_map , override_map ) }
515+
516+ _ ->
517+ { key , base_value }
518+ end
519+ end )
520+ end
521+
510522 defp mock_payload ( % { event: "issue_comment" } = ctx ) do
511523 ctx
512524 |> mock_base_payload ( )
513- |> Map . merge ( % {
514- "comment" =>
515- Map . merge (
516- % {
525+ |> Map . merge (
526+ merge_payload (
527+ % {
528+ "comment" => % {
517529 "id" => 123 ,
518530 "body" => mock_body ( ctx [ :body ] ) ,
519531 "user" => mock_user ( ctx [ :author ] )
520532 } ,
521- ctx [ :params ]
522- ) ,
523- "issue" => % {
524- "id" => 123 ,
525- "number" => 123 ,
526- "body" => mock_body ( ) ,
527- "user" => mock_user ( ctx [ :admin ] )
528- }
529- } )
533+ "issue" => % {
534+ "id" => 123 ,
535+ "number" => 123 ,
536+ "body" => mock_body ( ) ,
537+ "user" => mock_user ( ctx [ :admin ] )
538+ }
539+ } ,
540+ ctx [ :params ]
541+ )
542+ )
530543 end
531544
532545 defp mock_payload ( % { event: "issues" } = ctx ) do
533546 ctx
534547 |> mock_base_payload ( )
535- |> Map . put (
536- "issue" ,
537- Map . merge (
538- % {
539- "id" => 123 ,
540- "number" => 123 ,
541- "body" => mock_body ( ctx [ :body ] ) ,
542- "user" => mock_user ( ctx [ :author ] )
548+ |> Map . merge (
549+ merge_payload (
550+ % {
551+ "issue" => % {
552+ "id" => 123 ,
553+ "number" => 123 ,
554+ "body" => mock_body ( ctx [ :body ] ) ,
555+ "user" => mock_user ( ctx [ :author ] )
556+ }
543557 } ,
544558 ctx [ :params ]
545559 )
@@ -549,15 +563,16 @@ defmodule AlgoraWeb.Webhooks.GithubControllerTest do
549563 defp mock_payload ( % { event: "pull_request" } = ctx ) do
550564 ctx
551565 |> mock_base_payload ( )
552- |> Map . put (
553- "pull_request" ,
554- Map . merge (
555- % {
556- "id" => 123 ,
557- "number" => 123 ,
558- "body" => mock_body ( ctx [ :body ] ) ,
559- "user" => mock_user ( ctx [ :author ] ) ,
560- "merged_at" => nil
566+ |> Map . merge (
567+ merge_payload (
568+ % {
569+ "pull_request" => % {
570+ "id" => 123 ,
571+ "number" => 123 ,
572+ "body" => mock_body ( ctx [ :body ] ) ,
573+ "user" => mock_user ( ctx [ :author ] ) ,
574+ "merged_at" => nil
575+ }
561576 } ,
562577 ctx [ :params ]
563578 )
0 commit comments