CheckSuite.py
1 ############################ Copyrights and license ############################ 2 # # 3 # Copyright 2020 Raju Subramanian <coder@mahesh.net> # 4 # Copyright 2020 Dhruv Manilawala <dhruvmanila@gmail.com> # 5 # # 6 # This file is part of PyGithub. # 7 # http://pygithub.readthedocs.io/ # 8 # # 9 # PyGithub is free software: you can redistribute it and/or modify it under # 10 # the terms of the GNU Lesser General Public License as published by the Free # 11 # Software Foundation, either version 3 of the License, or (at your option) # 12 # any later version. # 13 # # 14 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # 15 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # 16 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # 17 # details. # 18 # # 19 # You should have received a copy of the GNU Lesser General Public License # 20 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # 21 # # 22 ################################################################################ 23 24 from datetime import datetime, timezone 25 26 from . import Framework 27 28 29 class CheckSuite(Framework.TestCase): 30 def setUp(self): 31 super().setUp() 32 self.check_suite_id = 1004503837 33 self.test_check_suite_id = 1366665055 34 self.test_repo = self.g.get_repo("dhruvmanila/pygithub-testing") 35 self.test_check_suite = self.test_repo.get_check_suite(self.test_check_suite_id) 36 self.repo = self.g.get_repo("wrecker/PySample") 37 self.check_suite = self.repo.get_check_suite(self.check_suite_id) 38 self.check_suite_ref = "fd09d934bcce792176d6b79d6d0387e938b62b7a" 39 self.commit = self.repo.get_commit("fd09d934bcce792176d6b79d6d0387e938b62b7a") 40 41 def testAttributes(self): 42 cs = self.check_suite 43 self.assertEqual(cs.after, "fd09d934bcce792176d6b79d6d0387e938b62b7a") 44 self.assertEqual(cs.app.slug, "github-actions") 45 self.assertEqual(cs.before, "9ee0caba8648aa0b8b5fc68ebc37c3c1162aa283") 46 self.assertEqual( 47 cs.check_runs_url, 48 "https://api.github.com/repos/wrecker/PySample/check-suites/1004503837/check-runs", 49 ) 50 self.assertEqual(cs.conclusion, "success") 51 self.assertEqual(cs.created_at, datetime(2020, 8, 4, 5, 6, 54, tzinfo=timezone.utc)) 52 self.assertEqual(cs.head_branch, "wrecker-patch-1") 53 self.assertEqual(cs.head_commit.sha, "fd09d934bcce792176d6b79d6d0387e938b62b7a") 54 self.assertEqual(cs.head_sha, "fd09d934bcce792176d6b79d6d0387e938b62b7a") 55 self.assertEqual(cs.id, self.check_suite_id) 56 self.assertEqual(cs.latest_check_runs_count, 2) 57 self.assertEqual(cs.id, self.check_suite_id) 58 self.assertEqual(len(cs.pull_requests), 1) 59 self.assertEqual(cs.pull_requests[0].id, 462527907) 60 self.assertEqual(cs.repository.url, "https://api.github.com/repos/wrecker/PySample") 61 self.assertEqual(cs.status, "completed") 62 self.assertEqual(cs.updated_at, datetime(2020, 8, 4, 5, 7, 40, tzinfo=timezone.utc)) 63 self.assertEqual( 64 cs.url, 65 "https://api.github.com/repos/wrecker/PySample/check-suites/1004503837", 66 ) 67 68 def testGetCheckSuitesForRef(self): 69 check_suites = self.commit.get_check_suites() 70 self.assertEqual(check_suites.totalCount, 6) 71 self.assertListEqual( 72 [cs.id for cs in check_suites], 73 [1004503392, 1004503393, 1004503395, 1004503397, 1004503837, 1004503857], 74 ) 75 76 def testGetCheckSuitesForRefFilterByAppId(self): 77 check_suites = self.commit.get_check_suites(app_id=29110) 78 self.assertEqual(check_suites.totalCount, 1) 79 self.assertListEqual([cs.id for cs in check_suites], [1004503392]) 80 81 def testGetCheckSuitesForRefFilterByCheckName(self): 82 check_suites = self.commit.get_check_suites(check_name="Alex") 83 self.assertEqual(check_suites.totalCount, 1) 84 self.assertListEqual([cs.id for cs in check_suites], [1004503395]) 85 86 def testCheckSuiteRerequest(self): 87 cs = self.repo.get_check_suite(1004503395) 88 status = cs.rerequest() 89 self.assertTrue(status) 90 91 def testGetCheckRuns(self): 92 check_runs = self.test_check_suite.get_check_runs() 93 self.assertEqual(check_runs.totalCount, 8) 94 self.assertListEqual( 95 [cr.id for cr in check_runs], 96 [ 97 1278952206, 98 1279259090, 99 1280450752, 100 1280914700, 101 1296027873, 102 1296028076, 103 1296029378, 104 1296029552, 105 ], 106 ) 107 108 def testGetCheckRunsFilterByCheckName(self): 109 check_runs = self.test_check_suite.get_check_runs(check_name="Testing") 110 self.assertEqual(check_runs.totalCount, 1) 111 self.assertEqual([cr.id for cr in check_runs], [1278952206]) 112 113 def testGetCheckRunsFilterByStatus(self): 114 check_runs = self.test_check_suite.get_check_runs(status="completed") 115 self.assertEqual(check_runs.totalCount, 8) 116 self.assertListEqual( 117 [cr.id for cr in check_runs], 118 [ 119 1278952206, 120 1279259090, 121 1280450752, 122 1280914700, 123 1296027873, 124 1296028076, 125 1296029378, 126 1296029552, 127 ], 128 ) 129 130 def testGetCheckRunsFilterByFilter(self): 131 check_runs = self.test_check_suite.get_check_runs(filter="all") 132 self.assertEqual(check_runs.totalCount, 8) 133 self.assertListEqual( 134 [cr.id for cr in check_runs], 135 [ 136 1278952206, 137 1279259090, 138 1280450752, 139 1280914700, 140 1296027873, 141 1296028076, 142 1296029378, 143 1296029552, 144 ], 145 ) 146 147 def testCreateCheckSuite(self): 148 sha = "e5868bd5a9ccdd65c9c979250e11105f4c88faf4" 149 check_suite = self.test_repo.create_check_suite(head_sha=sha) 150 self.assertEqual(check_suite.head_sha, sha) 151 self.assertEqual(check_suite.status, "queued") 152 self.assertIsNone(check_suite.conclusion) 153 154 def testUpdateCheckSuitesPreferences(self): 155 data = [{"app_id": 85429, "setting": False}] 156 repo_preferences = self.test_repo.update_check_suites_preferences(data) 157 setting = None 158 for app in repo_preferences.preferences["auto_trigger_checks"]: 159 if app["app_id"] == data[0]["app_id"]: 160 setting = app["setting"] 161 self.assertFalse(setting) 162 self.assertEqual(repo_preferences.repository.full_name, "dhruvmanila/pygithub-testing") 163 data = [{"app_id": 85429, "setting": True}] 164 repo_preferences = self.test_repo.update_check_suites_preferences(data) 165 for app in repo_preferences.preferences["auto_trigger_checks"]: 166 if app["app_id"] == data[0]["app_id"]: 167 setting = app["setting"] 168 self.assertTrue(setting)