diff options
Diffstat (limited to 'pygithub3')
-rw-r--r-- | pygithub3/resources/gists.py | 37 | ||||
-rw-r--r-- | pygithub3/tests/services/test_gists.py | 93 |
2 files changed, 130 insertions, 0 deletions
diff --git a/pygithub3/resources/gists.py b/pygithub3/resources/gists.py new file mode 100644 index 0000000..8345f84 --- /dev/null +++ b/pygithub3/resources/gists.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from .base import Resource +from .users import User + + +class File(Resource): + + def __str__(self): + return '<GistFile (%s)>' % getattr(self, 'filename', '') + + +class Fork(Resource): + + _dates = ('created_at', ) + _maps = {'user': User} + def __str__(self): + return '<GistFork>' + + +class History(Resource): + + _dates = ('committed_at', ) + _maps = {'user': User} + + def __str__(self): + return '<GistHistory (%s)>' % getattr(self, 'version', '') + +class Gist(Resource): + + _dates = ('created_at', ) + _maps = {'user': User} + _collection_maps = {'files': File, 'forks': Fork, 'history': History} + + def __str__(self): + return '<Gist (%s)>' % getattr(self, 'description', '') diff --git a/pygithub3/tests/services/test_gists.py b/pygithub3/tests/services/test_gists.py new file mode 100644 index 0000000..af88e1e --- /dev/null +++ b/pygithub3/tests/services/test_gists.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import requests +from mock import patch, Mock + +from pygithub3.tests.utils.core import TestCase +from pygithub3.resources.base import json +from pygithub3.services.gists import Gist +from pygithub3.tests.utils.base import (mock_response, mock_response_result, + mock_json) +from pygithub3.tests.utils.services import _ + +json.dumps = Mock(side_effect=mock_json) +json.loads = Mock(side_effect=mock_json) + + +@patch.object(requests.sessions.Session, 'request') +class TestGistService(TestCase): + + def setUp(self): + self.gs = Gist() + + def test_LIST_without_user(self, request_method): + request_method.return_value = mock_response_result() + self.gs.list().all() + self.assertEqual(request_method.call_args[0], ('get', _('gists'))) + + def test_LIST_with_user(self, request_method): + request_method.return_value = mock_response_result() + self.gs.list('octocat').all() + self.assertEqual(request_method.call_args[0], + ('get', _('users/octocat/gists'))) + + def test_LIST_public(self, request_method): + request_method.return_value = mock_response_result() + self.gs.list_public().all() + self.assertEqual(request_method.call_args[0], + ('get', _('gists/public'))) + + def test_LIST_starred(self, request_method): + request_method.return_value = mock_response_result() + self.gs.list_starred.all() + self.assertEqual(request_method.call_args[0], + ('get', _('gists/starred'))) + + def test_GET(self, request_method): + request_method.return_value = mock_response() + self.gs.get(1) + self.assertEqual(request_method.call_args[0], + ('get', _('gists/1'))) + + def test_CREATE(self, request_method): + request_method.return_value = mock_response('post') + self.gs.create(dict(public=True, files={ + 'file1.txt': {'content': 'Some\ncontent'}})) + self.assertEqual(request_method.call_args[0], + ('post', _('gists'))) + + def test_UPDATE(self, request_method): + request_method.return_value = mock_response('patch') + self.gs.update(1, {'description': 'edited'}) + self.assertEqual(request_method.call_args[0], + ('patch', _('gists/1'))) + + def test_STAR(self, request_method): + self.gs.star(1) + self.assertEqual(request_method.call_args[0], + ('put', _('gists/1/star'))) + + def test_UNSTAR(self, request_method): + request_method.return_value = mock_response('delete') + self.gs.unstar(1) + self.assertEqual(request_method.call_args[0], + ('delete', _('gists/1/star'))) + + def test_IS_STARRED(self, request_method): + request_method.return_value = mock_response() + self.gs.is_starred(1) + self.assertEqual(request_method.call_args[0], + ('get', _('gists/1/star'))) + + def test_FORK(self, request_method): + request_method.return_value = mock_response('post') + self.gs.fork(1) + self.assertEqual(request_method.call_args[0], + ('post', _('gists/1/fork'))) + + def test_DELETE(self, request_method): + request_method.return_value = mock_response('delete') + self.gs.delete(1) + self.assertEqual(request_method.call_args[0], + ('delete', _('gists/1'))) |