aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/tests
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3/tests')
-rw-r--r--pygithub3/tests/requests/test_core.py8
-rw-r--r--pygithub3/tests/services/test_git_data.py157
-rw-r--r--pygithub3/tests/services/test_pull_requests.py190
-rw-r--r--pygithub3/tests/utils/base.py2
4 files changed, 352 insertions, 5 deletions
diff --git a/pygithub3/tests/requests/test_core.py b/pygithub3/tests/requests/test_core.py
index cd162b3..110f00e 100644
--- a/pygithub3/tests/requests/test_core.py
+++ b/pygithub3/tests/requests/test_core.py
@@ -5,8 +5,8 @@ from mock import Mock
from pygithub3.tests.utils.core import TestCase
from pygithub3.requests.base import Factory, Body, json, Request
-from pygithub3.exceptions import (UriInvalid, DoesNotExists, ValidationError,
- InvalidBodySchema)
+from pygithub3.exceptions import (UriInvalid, RequestDoesNotExist,
+ ValidationError, InvalidBodySchema)
from pygithub3.tests.utils.base import mock_json, DummyRequest
from pygithub3.tests.utils.requests import (
RequestWithArgs, RequestCleanedUri, RequestBodyInvalidSchema,
@@ -27,8 +27,8 @@ class TestFactory(TestCase):
self.assertRaises(UriInvalid, self.f, '.invalid')
def test_BUILDER_with_fake_action(self):
- self.assertRaises(DoesNotExists, self.f, 'users.fake')
- self.assertRaises(DoesNotExists, self.f, 'fake.users')
+ self.assertRaises(RequestDoesNotExist, self.f, 'users.fake')
+ self.assertRaises(RequestDoesNotExist, self.f, 'fake.users')
def test_BUILDER_builds_users(self):
""" Users.get as real test because it wouldn't be useful mock
diff --git a/pygithub3/tests/services/test_git_data.py b/pygithub3/tests/services/test_git_data.py
new file mode 100644
index 0000000..da1abf7
--- /dev/null
+++ b/pygithub3/tests/services/test_git_data.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+import requests
+from mock import patch, Mock
+
+from pygithub3.tests.utils.core import TestCase
+from pygithub3.services.git_data import (Blobs, Commits, References, Tags,
+ Trees)
+from pygithub3.resources.base import json
+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 TestBlobsService(TestCase):
+ def setUp(self):
+ self.service = Blobs(user='octocat', repo='repo')
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response()
+ self.service.get('abc123')
+ self.assertEqual(reqm.call_args[0],
+ ('get', _('repos/octocat/repo/git/blobs/abc123')))
+
+ def test_CREATE(self, reqm):
+ reqm.return_value = mock_response('post')
+ self.service.create({'content': 'hello, friends', 'encoding':
+ 'utf-8'})
+ self.assertEqual(reqm.call_args[0],
+ ('post', _('repos/octocat/repo/git/blobs')))
+
+
+@patch.object(requests.sessions.Session, 'request')
+class TestCommitsService(TestCase):
+ def setUp(self):
+ self.service = Commits(user='octocat', repo='repo')
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response()
+ self.service.get('abc123')
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/octocat/repo/git/commits/abc123'))
+ )
+
+ def test_CREATE(self, reqm):
+ reqm.return_value = mock_response('post')
+ self.service.create({
+ 'message': 'hello',
+ 'tree': 'abc123',
+ 'parents': ['mom', 'dad'],
+ })
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/octocat/repo/git/commits'))
+ )
+
+
+@patch.object(requests.sessions.Session, 'request')
+class TestReferencesService(TestCase):
+ def setUp(self):
+ self.service = References(user='user', repo='repo')
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response()
+ self.service.get('heads/fnord')
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/git/refs/heads/fnord'))
+ )
+
+ def test_LIST(self, reqm):
+ reqm.return_value = mock_response_result()
+ self.service.list().all()
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/git/refs'))
+ )
+
+ def test_create(self, reqm):
+ reqm.return_value = mock_response('post')
+ self.service.create({'sha': 'hello', 'ref': 'something'})
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/git/refs'))
+ )
+
+ def test_update(self, reqm):
+ reqm.return_value = mock_response('patch')
+ self.service.update('master', {'sha': 'abc123'})
+ self.assertEqual(
+ reqm.call_args[0],
+ ('patch', _('repos/user/repo/git/refs/master'))
+ )
+
+ def test_delete(self, reqm):
+ reqm.return_value = mock_response('delete')
+ self.service.delete('branch')
+ self.assertEqual(
+ reqm.call_args[0],
+ ('delete', _('repos/user/repo/git/refs/branch'))
+ )
+
+@patch.object(requests.sessions.Session, 'request')
+class TestTagsService(TestCase):
+ def setUp(self):
+ self.service = Tags(user='user', repo='repo')
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response()
+ self.service.get('abc123')
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/git/tags/abc123'))
+ )
+
+ def test_CREATE(self, reqm):
+ reqm.return_value = mock_response('post')
+ self.service.create({'tag': 'v1.2.3', 'message': 'a tag',
+ 'object': 'abc123', 'type': 'commit'})
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/git/tags'))
+ )
+
+
+@patch.object(requests.sessions.Session, 'request')
+class TestTreesService(TestCase):
+ def setUp(self):
+ self.service = Trees(user='user', repo='repo')
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response()
+ self.service.get('abc123')
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/git/trees/abc123'))
+ )
+
+ def test_CREATE(self, reqm):
+ reqm.return_value = mock_response('post')
+ self.service.create({
+ 'tree': [
+ {'path': 'foo.txt', 'mode': '100644', 'type': 'blob',
+ 'sha': 'abc123'},
+ ],
+ })
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/git/trees'))
+ )
diff --git a/pygithub3/tests/services/test_pull_requests.py b/pygithub3/tests/services/test_pull_requests.py
new file mode 100644
index 0000000..4a9fd41
--- /dev/null
+++ b/pygithub3/tests/services/test_pull_requests.py
@@ -0,0 +1,190 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+import requests
+from mock import patch, Mock
+from nose.tools import raises
+
+from pygithub3.tests.utils.core import TestCase
+from pygithub3.services.pull_requests import PullRequests, Comments
+from pygithub3.requests.base import ValidationError, json
+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 TestPullRequestsService(TestCase):
+ def setUp(self):
+ self.service = PullRequests(user='user', repo='repo')
+
+ def test_LIST(self, reqm):
+ reqm.return_value = mock_response_result()
+ self.service.list().all()
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/pulls'))
+ )
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response()
+ self.service.get(123)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/pulls/123'))
+ )
+
+ def test_CREATE_with_title_and_body(self, reqm):
+ reqm.return_value = mock_response('post')
+ data = {
+ 'title': 'this is a pull request',
+ 'body': 'merge me!',
+ 'head': 'octocat:some-feature',
+ 'base': 'master',
+ }
+ self.service.create(data)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/pulls'))
+ )
+
+ def test_CREATE_with_issue(self, reqm):
+ reqm.return_value = mock_response('post')
+ data = {
+ 'issue': 1,
+ 'head': 'octocat:some-feature',
+ 'base': 'master',
+ }
+ self.service.create(data)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/pulls'))
+ )
+
+ @raises(ValidationError)
+ def test_CREATE_with_no_title(self, reqm):
+ reqm.return_value = mock_response('post')
+ data = {
+ 'body': 'merge me!',
+ 'head': 'octocat:some-feature',
+ 'base': 'master',
+ }
+ self.service.create(data)
+
+ def test_UPDATE(self, reqm):
+ reqm.return_value = mock_response('patch')
+ data = {}
+ self.service.update(123, data)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('patch', _('repos/user/repo/pulls/123'))
+ )
+
+ @raises(ValidationError)
+ def test_UPDATE_with_invalid_state(self, reqm):
+ reqm.return_value = mock_response('patch')
+ data = {'state': 'Illinois'}
+ self.service.update(123, data)
+
+ def test_LIST_COMMITS(self, reqm):
+ reqm.return_value = mock_response_result('get')
+ self.service.list_commits(123).all()
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/pulls/123/commits'))
+ )
+
+ def test_LIST_FILES(self, reqm):
+ reqm.return_value = mock_response_result('get')
+ self.service.list_files(123).all()
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/pulls/123/files'))
+ )
+
+ def test_IS_MERGED(self, reqm):
+ resp = self.service.is_merged(123)
+ self.assertTrue(resp)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('head', _('repos/user/repo/pulls/123/merge'))
+ )
+
+ def test_MERGE(self, reqm):
+ reqm.return_value = mock_response(200)
+ self.service.merge(123, 'merging this')
+ self.assertEqual(
+ reqm.call_args[0],
+ ('put', _('repos/user/repo/pulls/123/merge'))
+ )
+
+
+@patch.object(requests.sessions.Session, 'request')
+class TestPullRequestCommentsService(TestCase):
+ def setUp(self):
+ self.service = Comments(user='user', repo='repo')
+
+ def test_LIST(self, reqm):
+ reqm.return_value = mock_response_result(200)
+ self.service.list(123).all()
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/pulls/123/comments'))
+ )
+
+ def test_GET(self, reqm):
+ reqm.return_value = mock_response(200)
+ self.service.get(1)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('get', _('repos/user/repo/pulls/comments/1'))
+ )
+
+ def test_CREATE(self, reqm):
+ reqm.return_value = mock_response(201)
+ data = {
+ 'body': ':sparkles:',
+ 'commit_id': 'abc123',
+ 'path': 'foo.txt',
+ 'position': '2',
+ }
+ self.service.create(1, data)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/pulls/1/comments'))
+ )
+
+ def test_CREATE_in_reply_to(self, reqm):
+ reqm.return_value = mock_response(201)
+ data = {
+ 'body': ':sparkles:',
+ 'in_reply_to': '5',
+ }
+ self.service.create(1, data)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('post', _('repos/user/repo/pulls/1/comments'))
+ )
+
+ def test_UPDATE(self, reqm):
+ reqm.return_value = mock_response(200)
+ data = {
+ 'body': 'something completely different',
+ }
+ self.service.update(1, data)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('patch', _('repos/user/repo/pulls/comments/1'))
+ )
+
+ def test_DELETE(self, reqm):
+ reqm.return_value = mock_response(204)
+ self.service.delete(1)
+ self.assertEqual(
+ reqm.call_args[0],
+ ('delete', _('repos/user/repo/pulls/comments/1'))
+ )
diff --git a/pygithub3/tests/utils/base.py b/pygithub3/tests/utils/base.py
index 49ea2b4..f90b5d3 100644
--- a/pygithub3/tests/utils/base.py
+++ b/pygithub3/tests/utils/base.py
@@ -14,7 +14,7 @@ def mock_json(content):
def mock_response(status_code='get', content={}):
CODES = dict(get=200, patch=200, post=201, delete=204)
response = Mock(name='response')
- response.status_code = CODES[str(status_code).lower()] or status_code
+ response.status_code = CODES.get(str(status_code).lower(), status_code)
response.content = content
return response