8000 Merge pull request #423 from noellee/develop · pythonthings/github3.py@e4550ac · GitHub
[go: up one dir, main page]

Skip to content

Commit e4550ac

Browse files
committed
Merge pull request sigmavirus24#423 from noellee/develop
Add issue and create_comment methods to pull requests
2 parents baf51f3 + edd2af5 commit e4550ac

File tree

6 files changed

+60
-0
lines changed

6 files changed

+60
-0
lines changed

AUTHORS.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,5 @@ Contributors
100100
- Marcin Wielgoszewski (@mwielgoszewski)
101101

102102
- Omri Harel (@omriharel)
103+
104+
- Noel Lee (@noellee)

github3/pulls.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .repos.commit import RepoCommit
1717
from .users import User
1818
from .decorators import requires_auth
19+
from .issues import Issue
1920
from .issues.comment import IssueComment
2021
from uritemplate import URITemplate
2122

@@ -207,6 +208,19 @@ def close(self):
207208
"""
208209
return self.update(self.title, self.body, 'closed')
209210

211+
@requires_auth
212+
def create_comment(self, body):
213+
"""Create a comment on this pull request's issue.
214+
215+
:param str body: (required), comment body
216+
:returns: :class:`IssueComment <github3.issues.comment.IssueComment>`
217+
"""
218+
url = self.comments_url
219+
json = None
220+
if body:
221+
json = self._json(self._post(url, data={'body': body}), 201)
222+
return self._instance_or_null(IssueComment, json)
223+
210224
@requires_auth
211225
def create_review_comment(self, body, commit_id, path, position):
212226
"""Create a review comment on this pull request.
@@ -243,6 +257,14 @@ def is_merged(self):
243257
url = self._build_url('merge', base_url=self._api)
244258
return self._boolean(self._get(url), 204, 404)
245259

260+
def issue(self):
261+
"""Retrieve the issue associated with this pull request.
262+
263+
:returns: :class:`~github3.issues.Issue`
264+
"""
265+
json = self._json(self._get(self.issue_url), 200)
266+
return self._instance_or_null(Issue, json)
267+
246268
def commits(self, number=-1, etag=None):
247269
r"""Iterate over the commits on this pull request.
248270
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"http_interactions": [{"response": {"body": {"string": "", "encoding": "utf-8", "base64_string": "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"}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/423", "headers": {"access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "x-github-media-type": "github.v3; param=full; format=json", "vary": "Accept, Authorization, Cookie, X-GitHub-OTP", "access-control-allow-credentials": "true", "content-encoding": "gzip", "etag": "W/\"c966bea9a9e7752028d2dd77fa8ec61e\"", "x-ratelimit-remaining": "4999", "date": "Sun, 02 Aug 2015 02:09:59 GMT", "x-xss-protection": "1; mode=block", "content-security-policy": "default-src 'none'", "status": "200 OK", "transfer-encoding": "chunked", "x-served-by": "13d09b732ebe76f892093130dc088652", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "x-ratelimit-reset": "1438484999", "content-type": "application/json; charset=utf-8", "x-frame-options": "deny", "access-control-allow-origin": "*", "x-ratelimit-limit": "5000", "cache-control": "private, max-age=60, s-maxage=60", "last-modified": "Sun, 02 Aug 2015 02:01:23 GMT", "x-content-type-options": "nosniff", "x-github-request-id": "3A99CADB:65B7:5827750:55BD7BF6", "server": "GitHub.com"}}, "request": {"method": "GET", "body": {"string": "", "encoding": "utf-8"}, "uri": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/423", "headers": {"Authorization": "Basic <BASIC_AUTH>", "Accept": "application/vnd.github.v3.full+json", "Content-Type": "application/json", "Accept-Charset": "utf-8", "Connection": "keep-alive", "User-Agent": "github3.py/1.0.0a2", "Accept-Encoding": "gzip, deflate"}}, "recorded_at": "2015-08-02T02:09:59"}, {"response": {"body": {"string": "{\"url\":\"https://api.github.com/repos/sigmavirus24/github3.py/issues/comments/126977611\",\"html_url\":\"https://github.com/sigmavirus24/github3.py/pull/423#issuecomment-126977611\",\"issue_url\":\"https://api.github.com/repos/sigmavirus24/github3.py/issues/423\",\"id\":126977611,\"user\":{\"login\":\"noellee\",\"id\":5040727,\"avatar_url\":\"https://avatars.githubusercontent.com/u/5040727?v=3\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/noellee\",\"html_url\":\"https://github.com/noellee\",\"followers_url\":\"https://api.github.com/users/noellee/followers\",\"following_url\":\"https://api.github.com/users/noellee/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/noellee/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/noellee/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/noellee/subscriptions\",\"organizations_url\":\"https://api.github.com/users/noellee/orgs\",\"repos_url\":\"https://api.github.com/users/noellee/repos\",\"events_url\":\"https://api.github.com/users/noellee/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/noellee/received_events\",\"type\":\"User\",\"site_admin\":false},\"created_at\":\"2015-08-02T02:09:59Z\",\"updated_at\":\"2015-08-02T02:09:59Z\",\"body_html\":\"<p>Testing pull request comment</p>\",\"body_text\":\"Testing pull request comment\",\"body\":\"Testing pull request comment\"}", "encoding": "utf-8"}, "status": {"code": 201, "message": "Created"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/issues/423/comments", "headers": {"access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "x-github-media-type": "github.v3; param=full; format=json", "content-security-policy": "default-src 'none'", "vary": "Accept, Authorization, Cookie, X-GitHub-OTP", "access-control-allow-credentials": "true", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "etag": "\"cc13e54f8aade0532d72daa10d5beb3f\"", "x-ratelimit-remaining": "4998", "date": "Sun, 02 Aug 2015 02:09:59 GMT", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "status": "201 Created", "x-served-by": "a6882e5cd2513376cb9481dbcd83f3a2", "location": "https://api.github.com/repos/sigmavirus24/github3.py/issues/comments/126977611", "content-length": "1340", "content-type": "application/json; charset=utf-8", "x-frame-options": "deny", "access-control-allow-origin": "*", "x-ratelimit-limit": "5000", "cache-control": "private, max-age=60, s-maxage=60", "x-ratelimit-reset": "1438484999", "x-github-request-id": "3A99CADB:65B7:5827880:55BD7BF7", "server": "GitHub.com"}}, "request": {"method": "POST", "body": {"string": "{\"body\": \"Testing pull request comment\"}", "encoding": "utf-8"}, "uri": "https://api.github.com/repos/sigmavirus24/github3.py/issues/423/comments", "headers": {"Authorization": "Basic <BASIC_AUTH>", "Accept": "application/vnd.github.v3.full+json", "Content-Type": "application/json", "Accept-Charset": "utf-8", "Connection": "keep-alive", "Content-Length": "40", "User-Agent": "github3.py/1.0.0a2", "Accept-Encoding": "gzip, deflate"}}, "recorded_at": "2015-08-02T02:09:59"}], "recorded_with": "betamax/0.5.0"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"recorded_with": "betamax/0.5.0", "http_interactions": [{"recorded_at": "2015-07-29T09:17:36", "response": {"url": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/235", "headers": {"date": "Wed, 29 Jul 2015 09:17:36 GMT", "x-ratelimit-limit": "60", "x-frame-options": "deny", "x-github-request-id": "3A99CADB:3949:3085224:55B89A2F", "x-github-media-type": "github.v3; param=full; format=json", "x-ratelimit-reset": "1438165056", "etag": "W/\"36b9c94963d6278f858437afb30065ed\"", "content-type": "application/json; charset=utf-8", 67ED "x-ratelimit-remaining": "59", "transfer-encoding": "chunked", "server": "GitHub.com", "last-modified": "Tue, 21 Jul 2015 18:26:41 GMT", "vary": "Accept", "content-encoding": "gzip", "access-control-allow-credentials": "true", "x-xss-protection": "1; mode=block", "status": "200 OK", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "access-control-allow-origin": "*", "x-served-by": "4c8b2d4732c413f4b9aefe394bd65569", "cache-control": "public, max-age=60, s-maxage=60", "content-security-policy": "default-src 'none'", "x-content-type-options": "nosniff"}, "status": {"message": "OK", "code": 200}, "body": {"encoding": "utf-8", "base64_string": "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", "string": ""}}, "request": {"headers": {"Connection": "keep-alive", "Content-Type": "application/json", "Accept": "application/vnd.github.v3.full+json", "Accept-Encoding": "gzip, deflate", "Accept-Charset": "utf-8", "User-Agent": "github3.py/1.0.0a2"}, "method": "GET", "body": {"encoding": "utf-8", "string": ""}, "uri": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/235"}}, {"recorded_at": "2015-07-29T09:17:36", "response": {"url": "https://api.github.com/repos/sigmavirus24/github3.py/issues/235", "headers": {"date": "Wed, 29 Jul 2015 09:17:36 GMT", "x-ratelimit-limit": "60", "x-frame-options": "deny", "x-github-request-id": "3A99CADB:3949:30852F4:55B89A30", "x-github-media-type": "github.v3; param=full; format=json", "x-ratelimit-reset": "1438165056", "etag": "W/\"dade58745b1ae8ae18d8efdf68236814\"", "content-type": "application/json; charset=utf-8", "x-ratelimit-remaining": "58", "transfer-encoding": "chunked", "server": "GitHub.com", "last-modified": "Tue, 21 Jul 2015 18:26:41 GMT", "vary": "Accept", "content-encoding": "gzip", "access-control-allow-credentials": "true", "x-xss-protection": "1; mode=block", "status": "200 OK", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "access-control-allow-origin": "*", "x-served-by": "a7f8a126c9ed3f1c4715a34c0ddc7290", "cache-control": "public, max-age=60, s-maxage=60", "content-security-policy": "default-src 'none'", "x-content-type-options": "nosniff"}, "status": {"message": "OK", "code": 200}, "body": {"encoding": "utf-8", "base64_string": "H4sIAAAAAAAAA7VWXW/bNhT9K4SeNsCVbMtNNiHL0Nei2IAtfelS2JR0bRGlRI2knHlG/nsPKcW1tNiNHQ+QAUO659zLcz94t0GjZZAEhbW1SaKI1yJcCVs0aZipMtJUKxMZsSr5WujGTGdR+zUO600kjGnIRNP4bTAKJE9JmvlF6KKWbBtVvKRHkCOWkip7KfonOjDT+oK8LRlYC1vKgRR7qh7Ss26k7NQUeZDE06vrcfzzdBRUTZmSDhIoPQqssJKQsnd5zv4gSdxQyI0haxi3Vou0sYQQGuMQ20Cqlahgnq6EBInFJ09+NYmvZ6OAr7nlepg2/9J0leCYMlVZCOWLoola8K/rX2KwrXTH4WgD5/lYRTkyE+0Fc1yqPcOlklI9AD0Mtl+yfQfRDoXA2v+iWp3BANQ2UrYgaIUjuKJcCfO9ihwE4xFbtJCxc5E7DgOdNeUnBdRhEM5DhUi2vks9WZOaTIvaClWdplIPCSalV7wS//LTmYA0IPCD46RTeQSQL2nIgawtZBvVWqx5tnFSaMpIrCHsGXQDLNjspnYd99G1FGQWluY8L11bLbk09Pg0/YLkr88+p+jAJMikMpQDIFX2BX9aY7ScwQCoCCYVGn4UlEKSsaravdiNp2SC0acJdPmcW1BOx5PZm/HbN+Pp3fgqmYzxfIKDps6fsYnvJrNkNkmm186mjWZAszOJnYmbP3NNf2Oow9n2eCMfvxoc1dPNcLzDXzAMc7Fcnj9NQwd3p+M2K15B4/EBcp2qfDN3h0JCburbu4LY+z9//43l5LovxaRgnOl2MjNRZbLBF4ak1pIs4c1S6dK3FsMj3Nz24ztkzM30m0zldNuf7DeRf/ltwLMHXNJwIzFKmFp2oHeOp7N1dHeFMAxPVhCvSTM4ZhhhjNe1FFkbgi14xUr+pQ3bUM01agnx+zJga8EHEaH69byN+IcfO2fhTVTf3lf3FfT4QHxNL8BACFZLntHI/ctwjTGjSkIfsIJDE4Yu9xELO2K41JjbAJxoxwQCkxM0V1njzP0RfXAoAJ83S/+4Rrp00g5dxMM8+QxdMDVPfntJCV0m2jQ8+/1s5QenfFbsTuj/QeNF3/3icDcsvMyLC+q8890TehHea2iNX6v2Aauz9f7PiQ8p3g33dLO/8e1PVmTFrWfT2fineHzm1teCX7H1DQJ6+b2A6E/a/np3ytkb4DMsr9kCBxfdKzbBHtPltsE+7f4uCf1P3gh7bKduhT3w6ZthD36Z7XAQUW+7hDzf2xAfvwIFR/xbaQ8AAA==", "string": ""}}, "request": {"headers": {"Connection": "keep-alive", "Content-Type": "application/json", "Accept": "application/vnd.github.v3.full+json", "Accept-Encoding": "gzip, deflate", "Accept-Charset": "utf-8", "User-Agent": "github3.py/1.0.0a2"}, "method": "GET", "body": {"encoding": "utf-8", "string": ""}, "uri": "https://api.github.com/repos/sigmavirus24/github3.py/issues/235"}}]}

tests/integration/test_pulls.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ def test_close(self):
2727
p = self.get_pull_request(num=241)
2828
assert p.close() is True
2929

30+
def test_create_comment(self):
31+
"""Show that a user can create a comment on a PR."""
32+
self.basic_login()
33+
cassette_name = self.cassette_name('create_comment')
34+
with self.recorder.use_cassette(cassette_name):
35+
p = self.get_pull_request(num=423)
36+
comment = p.create_comment('Testing pull request comment')
37+
assert isinstance(comment, github3.issues.comment.IssueComment)
38+
3039
def test_commits(self):
3140
"""Show that one can iterate over a PR's commits."""
3241
cassette_name = self.cassette_name('commits')
@@ -73,6 +82,14 @@ def test_is_merged(self):
7382
p = self.get_pull_request()
7483
assert p.is_merged() is True
7584

85+
def test_issue(self):
86+
"""Show that one can retrieve the associated issue of a PR."""
87+
cassette_name = self.cassette_name('issue')
88+
with self.recorder.use_cassette(cassette_name):
89+
p = self.get_pull_request()
90+
issue = p.issue()
91+
assert isinstance(issue, github3.issues.Issue)
92+
7693
def test_issue_comments(self):
7794
"""Show that one can iterate over a PR's issue comments."""
7895
cassette_name = self.cassette_name('issue_comments')

tests/unit/test_pulls.py

Lines changed: 17 additions & 0 deletions
Original file lin E789 e numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ def test_close(self):
3434
}
3535
)
3636

37+
def test_create_comment(self):
38+
"""Show that a user can comment on a PR."""
39+
self.instance.create_comment('body')
40+
41+
self.post_called_with(
42+
url_for('comments').replace('pulls', 'issues'),
43+
data={'body': 'body'}
44+
)
45+
3746
def test_create_review_comment(self):
3847
"""Verify the request to create a review comment on a PR diff."""
3948
self.instance.create_review_comment('body', 'sha', 'path', 6)
@@ -63,6 +72,14 @@ def test_is_merged(self):
6372

6473
self.session.get.assert_called_once_with(url_for('merge'))
6574

75+
def test_issue(self):
76+
"""Show that a user can retrieve the associated issue of a PR."""
77+
self.instance.issue()
78+
79+
self.session.get.assert_called_once_with(
80+
url_for().replace('pulls', 'issues')
81+
)
82+
6683
def test_merge(self):
6784
"""Show that a user can merge a Pull Request."""
6885
self.instance.merge()

0 commit comments

Comments
 (0)
0