@@ -358,3 +358,89 @@ def test_create_jira_issue_returns_errors(
358
358
assert after .message == f"Failed to create issue for Bug { context .bug .id } "
359
359
assert after .levelno == logging .ERROR
360
360
assert after .response == fake_error_data
361
+
362
+
363
+ def test_paginated_projects_no_keys (mocked_responses ):
364
+ url = f"{ get_settings ().jira_base_url } rest/api/2/project/search"
365
+ mocked_response_data = {"some" : "data" }
366
+ mocked_responses .add (
367
+ responses .GET ,
368
+ url ,
369
+ status = 200 ,
370
+ match = [responses .matchers .query_string_matcher (None )],
371
+ json = mocked_response_data ,
372
+ )
373
+ resp = jira .get_service ().client .paginated_projects ()
374
+ assert resp == mocked_response_data
375
+
376
+
377
+ def test_paginated_projects_with_keys (mocked_responses , action_factory ):
378
+ action_factory ()
379
+ url = f"{ get_settings ().jira_base_url } rest/api/2/project/search"
380
+ mocked_response_data = {"some" : "data" }
381
+ mocked_responses .add (
382
+ responses .GET ,
383
+ url ,
384
+ status = 200 ,
385
+ match = [responses .matchers .query_string_matcher ("keys=ABC&keys=DEF" )],
386
+ json = mocked_response_data ,
387
+ )
388
+ resp = jira .get_service ().client .paginated_projects (keys = ["ABC" , "DEF" ])
389
+ assert resp == mocked_response_data
390
+
391
+
392
+ def test_paginated_projects_greater_than_50_keys (mocked_responses ):
393
+ keys = [str (i ) for i in range (51 )]
394
+ with pytest .raises (ValueError ):
395
+ jira .get_service ().client .paginated_projects (keys = keys )
396
+
397
+
398
+ @pytest .mark .parametrize (
399
+ "project_data, expected_result" ,
400
+ [
401
+ (
402
+ [
403
+ {"key" : "ABC" , "issueTypes" : [{"name" : "Task" }, {"name" : "Bug" }]},
404
+ {"key" : "DEF" , "issueTypes" : [{"name" : "Task" }, {"name" : "Bug" }]},
405
+ ],
406
+ True ,
407
+ ),
408
+ (
409
+ [
410
+ {"key" : "ABC" , "issueTypes" : [{"name" : "Task" }]},
411
+ {"key" : "DEF" , "issueTypes" : [{"name" : "Task" }, {"name" : "Bug" }]},
412
+ ],
413
+ False ,
414
+ ),
415
+ (
416
+ [
417
+ {"key" : "ABC" , "issueTypes" : [{"name" : "Task" }, {"name" : "Bug" }]},
418
+ ],
419
+ False ,
420
+ ),
421
+ ],
422
+ )
423
+ def test_all_project_issue_types_exist (
424
+ mocked_responses , action_factory , project_data , expected_result
425
+ ):
426
+ actions = Actions (
427
+ root = [
428
+ action_factory (whiteboard_tag = "abc" , parameters__jira_project_key = "ABC" ),
429
+ action_factory (whiteboard_tag = "def" , parameters__jira_project_key = "DEF" ),
430
+ ]
431
+ )
432
+
433
+ url = f"{ get_settings ().jira_base_url } rest/api/2/project/search"
434
+ mocked_responses .add (
435
+ responses .GET ,
436
+ url ,
437
+ status = 200 ,
438
+ match = [
439
+ responses .matchers .query_string_matcher (
440
+ "keys=ABC&keys=DEF&expand=issueTypes"
441
+ )
442
+ ],
443
+ json = {"values" : project_data },
444
+ )
445
+
446
+ assert jira .get_service ()._all_project_issue_types_exist (actions ) == expected_result
0 commit comments