diff options
author | 2011-12-03 13:22:12 +0100 | |
---|---|---|
committer | 2011-12-03 13:22:12 +0100 | |
commit | bb52626bda2a1d61833fe9c4cf9276b1feeb4e2e (patch) | |
tree | 43eb435554c89dd475a99b4fca85082770976dd7 | |
parent | Added owner filter (diff) | |
download | python-github3-bb52626bda2a1d61833fe9c4cf9276b1feeb4e2e.tar.xz python-github3-bb52626bda2a1d61833fe9c4cf9276b1feeb4e2e.zip |
Complete AuthGist handler
-rw-r--r-- | github3/handlers/gists.py | 94 | ||||
-rw-r--r-- | github3/tests/gists_handler_test.py | 62 |
2 files changed, 151 insertions, 5 deletions
diff --git a/github3/handlers/gists.py b/github3/handlers/gists.py index 37b1c3d..ed03c31 100644 --- a/github3/handlers/gists.py +++ b/github3/handlers/gists.py @@ -53,9 +53,93 @@ class Gist(Handler, MimeTypeMixin): class AuthGist(Gist): - def create_gist(self, description, public=True, files={}): - """ Create a gist """ - data = {'description': description, - 'public': public, - 'files': files} + def all_gists(self, limit=None): + """ Return all public gists + + NOTE: It returns all gists in github environment. Maybe you + want to use `limit` parameter + """ + + return self._get_resources('public', model=models.Gist, limit=limit) + + def my_gists(self, limit=None): + """ Return authenticated user's gists + + param `limit`: Number of gists + """ + + return self._get_resources('', model=models.Gist, limit=limit) + + def my_starred_gists(self, limit=None): + """ Return authenticated user's starred gists + + param `limit`: Number of gists + """ + + return self._get_resources('starred', model=models.Gist, limit=limit) + + def create_gist(self, is_public, files, desc=None): + """ Create and return a gist """ + + data = { + 'public': bool(is_public), + 'files': files, # TODO: Issue #1 + 'desc': desc or '', + } return self._post_resource('', data=data, model=models.Gist) + + def star_gist(self, gist_id): + """ Star a gist + + param `gist_id`: Gist id to star + """ + + return self._put('%s/star' % gist_id) + + def unstar_gist(self, gist_id): + """ Unstar a gist + + param `gist_id`: Gist id to unstar + """ + + return self._delete('%s/star' % gist_id) + + def is_starred(self, gist_id): + """ True if gist is starred + + param `gist_id`: Gist id + """ + + return self._bool('%s/star' % gist_id) + + def fork_gist(self, gist_id): + """ Return forked gist from id + + param `gist_id`: Gist id to be forked... + """ + + return self._post_resource('%s/fork' % gist_id, data=None, + model=models.Gist) + + def delete_gist(self, gist_id): + """ Delete the gist + + param `gist_id`: Gist id + """ + + return self._delete(str(gist_id)) + + def create_comment(self, gist_id, comment): + """ Create comment into gist """ + + data = {'body': comment} + return self._post_resource('%s/comments' % gist_id, data=data, + model=models.GistComment) + + def delete_comment(self, comment_id): + """ Delete comment + + param `comment_id`: Comment id + """ + + return self._delete('comments/%s' % comment_id) diff --git a/github3/tests/gists_handler_test.py b/github3/tests/gists_handler_test.py index df67659..ecadcfb 100644 --- a/github3/tests/gists_handler_test.py +++ b/github3/tests/gists_handler_test.py @@ -35,6 +35,7 @@ class TestGistHandler(TestCase): comment = self.handler.get_comment(1) get.assert_called_with('comments/1', model=GistComment, headers=None) + class TestAuthGistHandler(TestCase): def setUp(self): @@ -46,3 +47,64 @@ class TestAuthGistHandler(TestCase): self.assertTrue(hasattr(self.handler, 'get_comments')) self.assertTrue(hasattr(self.handler, 'get_comment')) + @patch.object(Handler, '_get_resources') + def test_all_gists(self, get): + gists = self.handler.all_gists() + get.assert_called_with('public', model=Gist, limit=None) + + @patch.object(Handler, '_get_resources') + def test_my_gists(self, get): + gists = self.handler.my_gists() + get.assert_called_with('', model=Gist, limit=None) + + @patch.object(Handler, '_get_resources') + def test_my_starred_gists(self, get): + gists = self.handler.my_starred_gists() + get.assert_called_with('starred', model=Gist, limit=None) + + @patch.object(Handler, '_post_resource') + def test_create_gist(self, post): + data = { + 'public': False, + 'files': {'file': {'contents': 'file_data'}}, + 'desc': 'some' + } + gist = self.handler.create_gist(data['public'], data['files'], + data['desc']) + post.assert_called_with('', data=data, model=Gist) + + @patch.object(Handler, '_put') + def test_star_gist(self, put): + boolean = self.handler.star_gist(1) + put.assert_called_with('1/star') + + @patch.object(Handler, '_delete') + def test_unstar_gist(self, delete): + boolean = self.handler.unstar_gist(1) + delete.assert_callted_with('1/star') + + @patch.object(Handler, '_bool') + def test_is_starred(self, bool): + boolean = self.handler.is_starred(1) + bool.assert_called_with('1/star') + + @patch.object(Handler, '_post_resource') + def test_fork_gist(self, post): + gist = self.handler.fork_gist(1) + post.assert_called_with('1/fork', data=None, model=Gist) + + @patch.object(Handler, '_delete') + def test_delete_gist(self, delete): + boolean = self.handler.delete_gist(1) + delete.assert_called_with('1') + + @patch.object(Handler, '_post_resource') + def test_create_comment(self, post): + gist_comment = self.handler.create_comment(1, 'comment') + post.assert_called_with('1/comments', data={'body': 'comment'}, + model=GistComment) + + @patch.object(Handler, '_delete') + def test_delete_comment(self, delete): + boolean = self.handler.delete_comment(1) + delete.assert_called_with('comments/1') |