Skip to content

Commit 36381d4

Browse files
committed
Repos.forks service done
1 parent ce95f90 commit 36381d4

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

pygithub3/requests/repos/forks.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from . import Request
5+
6+
from pygithub3.resources.repos import Repo
7+
8+
9+
class List(Request):
10+
11+
uri = 'repos/{user}/{repo}/forks'
12+
resource = Repo
13+
14+
15+
class Create(Request):
16+
17+
uri = '/repos/{user}/{repo}/forks'
18+
resource = Repo

pygithub3/resources/repos.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def __str__(self):
106106

107107
class Download(Resource):
108108

109+
def __str__(self):
110+
return '<Download (%s)>' % getattr(self, 'name', '')
111+
109112
def ball_to_upload(self):
110113
return OrderedDict({
111114
'key': self.path, 'acl': self.acl, 'success_action_status': '201',

pygithub3/services/repos.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@
66
from .base import Service, MimeTypeMixin
77

88

9+
class Forks(Service):
10+
11+
def list(self, user=None, repo=None, sort='newest'):
12+
request = self.make_request('repos.forks.list', user=user, repo=repo)
13+
return self._get_result(request, sort=sort)
14+
15+
def create(self, user=None, repo=None, org=None):
16+
request = self.make_request('repos.forks.create', user=user, repo=repo)
17+
org = {'org': org} if org else {}
18+
return self._post(request, **org)
19+
20+
921
class Downloads(Service):
1022

1123
def list(self, user=None, repo=None):
@@ -111,6 +123,7 @@ def __init__(self, **config):
111123
self.collaborators = Collaborator(**config)
112124
self.commits = Commits(**config)
113125
self.downloads = Downloads(**config)
126+
self.forks = Forks(**config)
114127
super(Repo, self).__init__(**config)
115128

116129
def list(self, user=None, type='all'):

pygithub3/tests/services/test_repos.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
import requests
77
from mock import patch, Mock
88

9-
from pygithub3.services.repos import Repo, Collaborator, Commits, Downloads
9+
from pygithub3.services.repos import (Repo, Collaborator, Commits, Downloads,
10+
Forks)
1011
from pygithub3.resources.base import json
1112
from pygithub3.tests.utils.base import (mock_response, mock_response_result,
1213
mock_json)
@@ -268,3 +269,22 @@ def test_CREATE(self, request_method):
268269
self.assertEqual(request_method.call_args[0],
269270
('post', _('repos/oct/re_oct/downloads')))
270271
self.assertTrue(hasattr(download, 'upload'))
272+
273+
274+
@patch.object(requests.sessions.Session, 'request')
275+
class TestForksService(TestCase):
276+
277+
def setUp(self):
278+
self.fs = Forks(user='oct', repo='re_oct')
279+
280+
def test_LIST(self, request_method):
281+
request_method.return_value = mock_response_result()
282+
self.fs.list().all()
283+
self.assertEqual(request_method.call_args[0],
284+
('get', _('repos/oct/re_oct/forks')))
285+
286+
def test_CREATE(self, request_method):
287+
request_method.return_value = mock_response('post')
288+
self.fs.create()
289+
self.assertEqual(request_method.call_args[0],
290+
('post', _('repos/oct/re_oct/forks')))

0 commit comments

Comments
 (0)