Skip to content

Commit ba0ce2d

Browse files
committed
Diff between 'my' and 'get'
1 parent cff42ae commit ba0ce2d

File tree

2 files changed

+80
-8
lines changed

2 files changed

+80
-8
lines changed

github3/handlers/users.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,35 @@ def get_gists(self, user=None, limit=None):
108108
limit=limit)
109109

110110

111-
class AuthUser(User):
111+
class AuthUser(Handler):
112112
""" User handler with public and private access """
113113

114114
prefix = 'user'
115115

116+
def __init__(self, gh):
117+
super(AuthUser, self).__init__(gh)
118+
self._inject_handler(User(gh), prefix='get')
119+
116120
def __repr__(self):
117121
return '<AuthUser handler> %s>' % self._gh.session.auth[0]
118122

119-
def get(self):
123+
def me(self):
124+
""" Return authenticated user """
125+
120126
return self._get_resource('', model=models.AuthUser)
121127

128+
def my_followers(self, limit=None):
129+
""" Return authenticated user followers """
130+
131+
return self._get_resources('followers', model=models.User,
132+
limit=limit)
133+
134+
def my_following(self, limit=None):
135+
""" Return authenticated user following """
136+
137+
return self._get_resources('following', model=models.User,
138+
limit=limit)
139+
122140
def get_emails(self):
123141
""" Return list of emails """
124142

@@ -220,7 +238,7 @@ def delete_key(self, key):
220238
parse_key_id = getattr(key, 'id', key)
221239
return self._delete('keys/%s' % parse_key_id)
222240

223-
def get_repos(self, filter='all', limit=None):
241+
def my_repos(self, filter='all', limit=None):
224242
"""
225243
Return user's public repositories
226244
@@ -230,6 +248,12 @@ def get_repos(self, filter='all', limit=None):
230248
return self._get_resources('repos', model=models.Repo,
231249
limit=limit, type=str(filter))
232250

251+
def my_watched(self, limit=None):
252+
""" Return authenticated user repos that he watch """
253+
254+
return self._get_resources('watched', model=models.Repo,
255+
limit=limit)
256+
233257
def is_watching_repo(self, owner, repo):
234258
"""
235259
Return true if you are watching the user repository
@@ -266,3 +290,10 @@ def unwatch_repo(self, owner, repo):
266290
owner = getattr(owner, 'login', owner)
267291
repo = getattr(repo, 'name', repo)
268292
return self._delete('watched/%s/%s' % (owner, repo))
293+
294+
def my_orgs(self, limit=None):
295+
""" List public and private organizations
296+
for the authenticated user
297+
"""
298+
299+
return self._get_resources('orgs', model=models.Org, limit=limit)

github3/tests/user_handler_test.py

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from fixtures import *
88
from github3.models import User, AuthUser, Repo, Gist, Org, Key
99
from github3.exceptions import *
10+
from github3 import handlers
1011

1112

1213
class TestAuthUserHandler(TestCase):
@@ -18,14 +19,54 @@ def setUp(self):
1819
self.user_mock = Mock()
1920
self.user_mock.login = 'user_model'
2021

22+
def test_inject_user_handler(self):
23+
self.assertEquals(self.handler.get.im_class, handlers.users.User)
24+
self.assertEquals(self.handler.get_followers.im_class,
25+
handlers.users.User)
26+
self.assertEquals(self.handler.get_following.im_class,
27+
handlers.users.User)
28+
self.assertEquals(self.handler.get_repos.im_class,
29+
handlers.users.User)
30+
self.assertEquals(self.handler.get_watched.im_class,
31+
handlers.users.User)
32+
self.assertEquals(self.handler.get_orgs.im_class,
33+
handlers.users.User)
34+
self.assertEquals(self.handler.get_gists.im_class,
35+
handlers.users.User)
36+
2137
@patch.object(api.Github, 'get')
22-
def test_get(self, get):
38+
def test_me(self, get):
2339
get.return_value = GET_FULL_USER
24-
user = self.handler.get()
40+
user = self.handler.me()
2541
self.assertIsInstance(user, AuthUser)
2642
get.assert_called_with('user')
2743
self.assertEquals(len(user), len(GET_FULL_USER))
2844

45+
@patch.object(handlers.base.Handler, '_get_resource')
46+
def test_get(self, get):
47+
user = self.handler.get('test')
48+
get.assert_called_with('test', model=User)
49+
50+
@patch.object(handlers.base.Handler, '_get_resources')
51+
def test_get_my_followers(self, get):
52+
followers = self.handler.my_followers()
53+
get.assert_called_with('followers', model=User, limit=None)
54+
55+
@patch.object(handlers.base.Handler, '_get_resources')
56+
def test_get_my_following(self, get):
57+
following = self.handler.my_following()
58+
get.assert_called_with('following', model=User, limit=None)
59+
60+
@patch.object(handlers.base.Handler, '_get_resources')
61+
def test_get_my_watched(self, get):
62+
following = self.handler.my_watched()
63+
get.assert_called_with('watched', model=Repo, limit=None)
64+
65+
@patch.object(handlers.base.Handler, '_get_resources')
66+
def test_get_my_orgs(self, get):
67+
following = self.handler.my_orgs()
68+
get.assert_called_with('orgs', model=Org, limit=None)
69+
2970
@patch.object(api.Github, 'get')
3071
def test_get_emails(self, get):
3172
get.return_value = GET_USER_EMAILS
@@ -117,17 +158,17 @@ def test_delete_key(self, delete):
117158
delete.assert_called_with('user/keys/1', method='delete')
118159

119160
@patch.object(api.Github, '_request')
120-
def test_get_repos(self, request):
161+
def test_my_repos(self, request):
121162
response = request.return_value
122163
response.status_code = 200
123164
response.content = self.gh._parser.dumps(GET_SHORT_REPOS)
124165
response.headers = {'link': GET_LINK} # 1 per page
125-
repos = list(self.handler.get_repos(filter='public'))
166+
repos = list(self.handler.my_repos(filter='public'))
126167
self.assertEquals(len(repos), 5)
127168
self.assertIsInstance(repos[0], Repo)
128169
request.assert_called_with('GET', 'user/repos',
129170
page=5, type='public')
130-
repos = list(self.handler.get_repos(limit=2))
171+
repos = list(self.handler.my_repos(limit=2))
131172
self.assertEquals(len(repos), 2)
132173

133174
@patch.object(api.Github, 'head')

0 commit comments

Comments
 (0)