8000 pulls: 100%; orgs: on the way · dahlia/github3.py@c6a05bf · GitHub
[go: up one dir, main page]

Skip to content

Commit c6a05bf

Browse files
committed
pulls: 100%; orgs: on the way
1 parent dc84d3e commit c6a05bf

File tree

7 files changed

+227
-10
lines changed

7 files changed

+227
-10
lines changed

github3/pulls.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,11 @@ def merge(self, commit_message=''):
235235
"""
236236
data = None
237237
if commit_message:
238-
data = {'commit_message': commit_message}
238+
data = dumps({'commit_message': commit_message})
239239
url = self._build_url('merge', base_url=self._api)
240-
resp = self._put(url, data=dumps(data))
241-
self.merge_commit_sha = resp['merge_commit_sha']
242-
return resp.json['merged']
240+
json = self._json(self._put(url, data=data), 200)
241+
self.merge_commit_sha = json['sha']
242+
return json['merged']
243243

244244
def patch(self):
245245
"""Return the patch"""
@@ -266,9 +266,7 @@ def update(self, title=None, body=None, state=None):
266266
"""
267267
data = {'title': title, 'body': body, 'state': state}
268268
json = None
269-
for (k, v) in list(data.items()):
270-
if v is None:
271-
del data[k]
269+
self._remove_none(data)
272270

273271
if data:
274272
json = self._json(self._patch(self._api, data=dumps(data)), 200)

tests/json/merge

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e", "merged": true, "message": "Pull Request successfully merged"}

tests/json/pull_file

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"status": "removed", "deletions": 2, "raw_url": "https://github.com/sigmavirus24/github3.py/raw/2dcfbd6aba3bb29638faee896e8d5de41bb9f386/.pep8", "blob_url": "https://github.com/sigmavirus24/github3.py/blob/2dcfbd6aba3bb29638faee896e8d5de41bb9f386/.pep8", "contents_url": "https://api.github.com/repos/sigmavirus24/github3.py/contents/.pep8?ref=2dcfbd6aba3bb29638faee896e8d5de41bb9f386", "filename": ".pep8", "sha": "6624117b058ad27a2cfaafd024578e060681bf26", "additions": 0, "patch": "@@ -1,2 +0,0 @@\n-[pep8]\n-exclude=github3/packages/", "changes": 2}

tests/test_gists.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ def test_iter_files(self):
111111
expect(repr(gist_file).startswith('<Gist File')).is_True()
112112

113113
def test_iter_forks(self):
114-
#expect(self.gist.iter_forks()) == iter(self.gist._forks)
115-
pass
114+
with expect.raises(StopIteration):
115+
expect(next(self.gist.iter_forks()))
116116

117117
def test_refresh(self):
118118
self.response('gist', 200)

tests/test_git.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,6 @@ def te 67E6 st_recurse(self):
8989
expect(t).isinstance(github3.git.Tree)
9090
expect(repr(t).startswith('<Tree')).is_True()
9191
self.mock_assertions()
92+
93+
expect(t.tree[0]).isinstance(github3.git.Hash)
94+
expect(repr(t.tree[0]).startswith('<Hash')).is_True()

tests/test_orgs.py

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import github3
2+
from tests.utils import BaseCase, load, expect
3+
4+
5+
class TestTeam(BaseCase):
6+
def __init__(self, methodName='runTest'):
7+
super(TestTeam, self).__init__(methodName)
8+
self.team = github3.orgs.Team(load('team'))
9+
self.api = "https://api.github.com/teams/190009"
10+
11+
def setUp(self):
12+
super(TestTeam, self).setUp()
13+
self.team = github3.orgs.Team(self.team.to_json(), self.g)
14+
15+
def test_repr(self):
16+
expect(repr(self.team).startswith('<Team')).is_True()
17+
18+
def test_add_member(self):
19+
self.response('', 204)
20+
self.put(self.api + '/members/foo')
21+
self.conf = {'data': None}
22+
23+
with expect.githuberror():
24+
self.team.add_member('foo')
25+
26+
self.not_called()
27+
self.login()
28+
expect(self.team.add_member('foo')).is_True()
29+
self.mock_assertions()
30+
31+
def test_add_repo(self):
32+
self.response('', 204)
33+
self.put(self.api + '/repos/repo')
34+
self.conf = {'data': None}
35+
36+
with expect.githuberror():
37+
self.team.add_repo('repo')
38+
39+
self.not_called()
40+
self.login()
41+
expect(self.team.add_repo('repo')).is_True()
42+
self.mock_assertions()
43+
44+
def test_delete(self):
45+
self.response('', 204)
46+
self.delete(self.api)
47+
48+
with expect.githuberror():
49+
self.team.delete()
50+
51+
self.not_called()
52+
self.login()
53+
expect(self.team.delete()).is_True()
54+
self.mock_assertions()
55+
56+
def test_edit(self):
57+
self.response('team', 200)
58+
self.patch(self.api)
59+
self.conf = {'data': {'name': 'Collab', 'permission': 'admin'}}
60+
61+
with expect.githuberror():
62+
self.team.edit(None)
63+
64+
self.login()
65+
expect(self.team.edit(None)).is_False()
66+
self.not_called()
67+
68+
expect(self.team.edit('Collab', 'admin')).is_True()
69+
self.mock_assertions()
70+
71+
def test_has_repo(self):
72+
self.response('', 204)
73+
self.get(self.api + '/repos/repo')
74+
75+
expect(self.team.has_repo('repo')).is_True()
76+
self.mock_assertions()
77+
78+
def test_is_member(self):
79+
self.response('', 404)
80+
self.get(self.api + '/members/user')
81+
82+
expect(self.team.is_member('user')).is_False()
83+
self.mock_assertions()
84+
85+
def test_iter_members(self):
86+
self.response('user', _iter=True)
87+
self.get(self.api + '/members')
88+
89+
expect(next(self.team.iter_members())).isinstance(github3.users.User)
90+
self.mock_assertions()
91+
92+
def test_iter_repos(self):
93+
self.response('repo', _iter=True)
94+
self.get(self.api + '/repos')
95+
96+
expect(next(self.team.iter_repos())).isinstance(
97+
github3.repos.Repository)
98+
self.mock_assertions()
99+
100+
def test_remove_member(self):
101+
self.response('', 204)
102+
self.delete(self.api + '/members/user')
103+
104+
with expect.githuberror():
105+
self.team.remove_member(None)
106+
107+
self.not_called()
108+
self.login()
109+
expect(self.team.remove_member('user')).is_True()
110+
self.mock_assertions()
111+
112+
def test_remove_repo(self):
113+
self.response('', 204)
114+
self.delete(self.api + '/repos/repo')
115+
116+
with expect.githuberror():
117+
self.team.remove_repo(None)
118+
119+
self.not_called()
120+
self.login()
121+
expect(self.team.remove_repo('repo')).is_True()
122+
self.mock_assertions()

tests/test_pulls.py

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ def setUp(self):
1414
super(TestPullRequest, self).setUp()
1515
self.pull = github3.pulls.PullRequest(self.pull.to_json(), self.g)
1616

17+
def test_dest(self):
18+
expect(repr(self.pull.base).startswith('<Base')).is_True()
19+
1720
def test_repr(self):
1821
expect(repr(self.pull).startswith('<Pull Request'))
1922

@@ -30,7 +33,7 @@ def test_close(self):
3033
self.pull.title, self.pull.body, 'closed')
3134

3235
def test_diff(self):
33-
self.response('archive', 200)
36+
self.response('archive')
3437
self.get(self.api)
3538
self.conf = {
3639
'headers': {
@@ -40,3 +43,92 @@ def test_diff(self):
4043

4144
expect(self.pull.diff()) != ''
4245
self.mock_assertions()
46+
47+
def test_is_merged(self):
48+
self.response('', 204)
49+
self.get(self.api + '/merge')
50+
51+
expect(self.pull.is_merged()).is_True()
52+
self.mock_assertions()
53+
54+
self.response('', 404)
55+
expect(self.pull.is_merged()).is_False()
56+
self.mock_assertions()
57+
58+
def test_iter_comments(self):
59+
self.response('review_comment', _iter=True)
60+
self.get(self.api + '/comments')
61+
62+
c = next(self.pull.iter_comments())
63+
expect(c).isinstance(
64+
github3.pulls.ReviewComment)
65+
self.mock_assertions()
66+
67+
expect(repr(c).startswith('<Review Comment')).is_True()
68+
69+
def test_iter_comits(self):
70+
self.response('commit', _iter=True)
71+
self.get(self.api + '/commits')
72+
73+
expect(next(self.pull.iter_commits())).isinstance(github3.git.Commit)
74+
self.mock_assertions()
75+
76+
def test_iter_files(self):
77+
self.response('pull_file', _iter=True)
78+
self.get(self.api + '/files')
79+
80+
f = next(self.pull.iter_files())
81+
expect(f).isinstance(github3.pulls.PullFile)
82+
self.mock_assertions()
83+
84+
expect(repr(f).startswith('<Pull Request File')).is_True()
85+
86+
def test_merge(self):
87+
self.response('merge', 200)
88+
self.put(self.api + '/merge')
89+
self.conf = {'data': None}
90+
91+
with expect.githuberror():
92+
self.pull.merge()
93+
94+
self.not_called()
95+
self.login()
96+
expect(self.pull.merge()).is_True()
97+
self.mock_assertions()
98+
99+
self.conf['data'] = {'commit_message': 'Merged'}
100+
expect(self.pull.merge('Merged')).is_True()
101+
self.mock_assertions()
102+
103+
def test_patch(self):
104+
self.response('archive', 200)
105+
self.get(self.api)
106+
self.conf = {'headers': {'Accept': 'application/vnd.github.patch'}}
107+
108+
expect(self.pull.patch()) != ''
109+
self.mock_assertions()
110+
111+
def test_reopen(self):
112+
with expect.githuberror():
113+
self.pull.reopen()
114+
115+
self.login()
116+
with patch.object(github3.pulls.PullRequest, 'update') as up:
117+
self.pull.reopen()
118+
up.assert_called_once_with(
119+
self.pull.title, self.pull.body, 'open')
120+
121+
def test_update(self):
122+
self.response('pull', 200)
123+
self.patch(self.api)
124+
self.conf = {'data': {'title': 't', 'body': 'b', 'state': 'open'}}
125+
126+
with expect.githuberror():
127+
self.pull.update()
128+
129+
self.login()
130+
expect(self.pull.update()).is_False()
131+
self.not_called()
132+
133+
expect(self.pull.update('t', 'b', 'open')).is_True()
134+
self.mock_assertions()

0 commit comments

Comments
 (0)
0