aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2011-12-03 13:22:12 +0100
committerDavid Medina <davidmedina9@gmail.com>2011-12-03 13:22:12 +0100
commitbb52626bda2a1d61833fe9c4cf9276b1feeb4e2e (patch)
tree43eb435554c89dd475a99b4fca85082770976dd7
parentAdded owner filter (diff)
downloadpython-github3-bb52626bda2a1d61833fe9c4cf9276b1feeb4e2e.tar.xz
python-github3-bb52626bda2a1d61833fe9c4cf9276b1feeb4e2e.zip
Complete AuthGist handler
-rw-r--r--github3/handlers/gists.py94
-rw-r--r--github3/tests/gists_handler_test.py62
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')