Project.py
1 # ########################## Copyrights and license ############################ 2 # # 3 # Copyright 2018 bbi-yggy <yossarian@blackbirdinteractive.com> # 4 # # 5 # This file is part of PyGithub. # 6 # http://pygithub.github.io/PyGithub/v1/index.html # 7 # # 8 # PyGithub is free software: you can redistribute it and/or modify it under # 9 # the terms of the GNU Lesser General Public License as published by the Free # 10 # Software Foundation, either version 3 of the License, or (at your option) # 11 # any later version. # 12 # # 13 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # 14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # 15 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # 16 # details. # 17 # # 18 # You should have received a copy of the GNU Lesser General Public License # 19 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # 20 # # 21 # ############################################################################## 22 23 import github 24 25 from . import Framework 26 27 28 class Project(Framework.TestCase): 29 def setUp(self): 30 super().setUp() 31 self.repo = self.g.get_user().get_repo("PyGithub") 32 33 def testGetProject(self): 34 pid = 1682941 35 proj = self.g.get_project(pid) 36 self.assertEqual(proj.id, pid) 37 self.assertEqual(proj.name, "TestProject") 38 self.assertEqual(repr(proj), 'Project(name="TestProject")') 39 40 def testGetOrganizationProjects(self): 41 expectedProjects = ["Project1", "Project2", "Project3"] 42 org = self.g.get_organization("PyGithubTestOrg") 43 projects = [] 44 for proj in org.get_projects("open"): 45 projects.append(proj.name) 46 self.assertEqual(projects, expectedProjects) 47 48 def testGetRepositoryProjects(self): 49 expectedProjects = ["TestProject", "TestProjectClosed"] 50 projects = [] 51 for proj in self.repo.get_projects("all"): 52 projects.append(proj.name) 53 self.assertEqual(projects, expectedProjects) 54 55 # See https://developer.github.com/v3/projects/#get-a-project 56 def testProjectAttributes(self): 57 pid = 1682941 58 proj = self.g.get_project(pid) 59 self.assertEqual(proj.owner_url, "https://api.github.com/repos/bbi-yggy/PyGithub") 60 self.assertEqual(proj.url, "https://api.github.com/projects/1682941") 61 self.assertEqual(proj.html_url, "https://github.com/bbi-yggy/PyGithub/projects/1") 62 self.assertEqual(proj.columns_url, "https://api.github.com/projects/1682941/columns") 63 self.assertEqual(proj.id, pid) 64 self.assertEqual(proj.node_id, "MDc6UHJvamVjdDE2ODI5NDE=") 65 self.assertEqual(proj.name, "TestProject") 66 self.assertEqual(proj.body, "To be used for testing project access API for PyGithub.") 67 self.assertEqual(proj.number, 1) 68 self.assertEqual(proj.state, "open") 69 self.assertEqual(proj.creator, self.repo.owner) 70 self.assertEqual(proj.created_at.year, 2018) 71 self.assertTrue(proj.updated_at > proj.created_at) 72 73 # See https://developer.github.com/v3/projects/columns/#get-a-project-column 74 def testProjectColumnAttributes(self): 75 proj = self.g.get_project(1682941) 76 col = proj.get_columns()[0] 77 self.assertEqual(col.id, 3138830) 78 self.assertEqual(col.node_id, "MDEzOlByb2plY3RDb2x1bW4zMTM4ODMw") 79 self.assertEqual(col.name, "To Do") 80 self.assertEqual(col.url, "https://api.github.com/projects/columns/3138830") 81 self.assertEqual(col.project_url, "https://api.github.com/projects/1682941") 82 self.assertEqual(col.cards_url, "https://api.github.com/projects/columns/3138830/cards") 83 self.assertEqual(col.created_at.year, 2018) 84 self.assertTrue(col.updated_at >= col.created_at) 85 self.assertEqual(repr(col), 'ProjectColumn(name="To Do")') 86 87 # See https://developer.github.com/v3/projects/cards/#get-a-project-card 88 def testProjectCardAttributes(self): 89 proj = self.g.get_project(1682941) 90 col = proj.get_columns()[1] 91 card = col.get_cards()[0] 92 self.assertEqual(card.url, "https://api.github.com/projects/columns/cards/11780055") 93 self.assertEqual(card.column_url, "https://api.github.com/projects/columns/3138831") 94 self.assertEqual(card.content_url, "https://api.github.com/repos/bbi-yggy/PyGithub/issues/1") 95 self.assertEqual(card.id, 11780055) 96 self.assertEqual(card.node_id, "MDExOlByb2plY3RDYXJkMTE3ODAwNTU=") 97 self.assertEqual(card.note, None) # No notes for cards with content. 98 self.assertEqual(card.creator, self.repo.owner) 99 self.assertEqual(card.created_at.year, 2018) 100 self.assertTrue(card.updated_at >= card.created_at) 101 self.assertFalse(card.archived) 102 self.assertEqual(repr(card), "ProjectCard(id=11780055)") 103 104 def testGetProjectCardContent(self): 105 proj = self.g.get_project(1682941) 106 col = proj.get_columns()[1] 107 cards = col.get_cards() 108 109 pull_card = cards[0] 110 pull = pull_card.get_content("PullRequest") 111 self.assertIsInstance(pull, github.PullRequest.PullRequest) 112 self.assertEqual(pull.title, "Work in progress on support for GitHub projects API.") 113 self.assertRaises(ValueError, pull_card.get_content, "foo") 114 115 issue_card = cards[1] 116 issue = issue_card.get_content() 117 self.assertIsInstance(issue, github.Issue.Issue) 118 self.assertEqual(issue.title, "Test issue") 119 120 note_card = cards[2] 121 note_content = note_card.get_content() 122 self.assertEqual(note_content, None) 123 124 def testProjectCardMove(self): 125 proj = self.g.get_project(1682941) 126 cols = proj.get_columns() 127 card = cols[1].get_cards()[0] 128 self.assertTrue(card.move("top", cols[2].id)) 129 self.assertTrue(card.move("bottom", cols[1])) 130 131 def testProjectCardDelete(self): 132 proj = self.g.get_project(1682941) 133 cols = proj.get_columns() 134 card = cols[1].get_cards()[0] 135 self.assertTrue(card.delete()) 136 137 def testGetAllProjectCards(self): 138 expectedProjects = ["TestProject"] 139 expectedCards = 5 140 projects = [] 141 cards = 0 142 for proj in self.repo.get_projects(): 143 projects.append(proj.name) 144 for col in proj.get_columns(): 145 for card in col.get_cards("all"): 146 cards += 1 147 self.assertEqual(projects, expectedProjects) 148 self.assertEqual(cards, expectedCards) 149 150 def testCreateColumn(self): 151 project = self.repo.create_project("Project created by PyGithub", "Project Body") 152 column = project.create_column( 153 "Project Column created by PyGithub", 154 ) 155 self.assertEqual(column.id, 3999333) 156 157 def testCreateCardWithNote(self): 158 project = self.repo.create_project("Project created by PyGithub", "Project Body") 159 column = project.create_column( 160 "Project Column created by PyGithub", 161 ) 162 card1 = column.create_card(note="Project Card") 163 self.assertEqual(card1.id, 16039019) 164 165 def testCreateCardFromIssue(self): 166 project = self.repo.create_project("Project created by PyGithub", "Project Body") 167 column = project.create_column( 168 "Project Column created by PyGithub", 169 ) 170 issue = self.repo.create_issue(title="Issue created by PyGithub") 171 card2 = column.create_card(content_id=issue.id, content_type="Issue") 172 self.assertEqual(card2.id, 16039106) 173 174 def testEditCardWithoutParameters(self): 175 proj = self.g.get_project(4015343) 176 col = proj.get_columns()[0] 177 card = col.create_card(note="Project Card") 178 card.edit() 179 180 def testEditCardNote(self): 181 proj = self.g.get_project(4015343) 182 col = proj.get_columns()[0] 183 card = col.create_card(note="Project Card") 184 card.edit(note="Edited Card") 185 self.assertEqual(card.note, "Edited Card") 186 187 def testEditCardArchived(self): 188 proj = self.g.get_project(4015343) 189 col = proj.get_columns()[0] 190 card = col.create_card(note="Project Card") 191 card.edit(archived=True) 192 self.assertEqual(card.archived, True)