aboutsummaryrefslogtreecommitdiffstats
path: root/github3/tests
diff options
context:
space:
mode:
Diffstat (limited to 'github3/tests')
-rw-r--r--github3/tests/fixtures.py5
-rw-r--r--github3/tests/handler_test.py53
2 files changed, 57 insertions, 1 deletions
diff --git a/github3/tests/fixtures.py b/github3/tests/fixtures.py
index aef4425..fdbc3fb 100644
--- a/github3/tests/fixtures.py
+++ b/github3/tests/fixtures.py
@@ -23,7 +23,10 @@ GET_USER = {
}
GET_LINK = '<https://api.github.com/gists/public?page=2>; rel="next", <https://api.github.com/gists/public?page=5>; rel="last"'
-
+GET_RESOURCES = [
+ {'login': 'octocat'},
+ {'login': 'octocat'}
+]
GET_FOLLOWERS = [
{
"login": "octocat",
diff --git a/github3/tests/handler_test.py b/github3/tests/handler_test.py
index 51cd111..e691182 100644
--- a/github3/tests/handler_test.py
+++ b/github3/tests/handler_test.py
@@ -7,6 +7,8 @@ from github3 import api
from github3.handlers.base import Handler
from github3.exceptions import *
from github3.converters import *
+from github3.models.user import User
+from fixtures import *
import json
import requests
@@ -51,3 +53,54 @@ class TestHandler(TestCase):
data={'some': 'data'})
self.assertTrue(bool1)
self.assertTrue(bool2)
+
+ @patch.object(api.Github, '_request')
+ def test_get_resources(self, request):
+ # Simulating per_page=2 with STUB (it returns two resources)
+ response = request.return_value
+ response.status_code = 200
+ response.headers = {'link': GET_LINK}
+ response.content = self.gh._parser.dumps(GET_RESOURCES)
+ resources = self.handler._get_resources('users', model=User)
+ self.assertFalse(request.called)
+ resources = list(resources)
+ self.assertTrue(request.call_count, 5)
+ request_args = ('GET', 'users')
+ self.assertEquals(request.call_args_list, [
+ (request_args, {'page': 1}),
+ (request_args, {'page': 2}),
+ (request_args, {'page': 3}),
+ (request_args, {'page': 4}),
+ (request_args, {'page': 5})])
+ self.assertEquals(len(resources), 10)
+ self.assertEquals(resources[0].login, 'octocat')
+
+ request.reset_mock()
+ resources = self.handler._get_resources('users', model=User, limit=5)
+ resources = list(resources)
+ self.assertEquals(request.call_count, 3)
+ self.assertEquals(len(resources), 5)
+ request.reset_mock()
+ resources = self.handler._get_resources('users', model=User, limit=4)
+ resources = list(resources)
+ self.assertEquals(request.call_count, 2)
+ self.assertEquals(len(resources), 4)
+ request.reset_mock()
+ resources = self.handler._get_resources('users', model=User, limit=-5)
+ resources = list(resources)
+ self.assertEquals(request.call_count, 3)
+ self.assertEquals(len(resources), 5)
+
+ @patch.object(api.Github, 'get')
+ def test_get_resource(self, get):
+ # Converter test + api(get) test. Half trivial
+ get.return_value = {'login': 'octocat'}
+ model = self.handler._get_resource('test', model=User)
+ self.assertEquals(model.login, 'octocat')
+
+ @patch.object(api.Github, 'post')
+ def test_post_resource(self, post):
+ post.return_value = {'data': 'posted'}
+ data = {'data': 'to_post'}
+ user_new = self.handler._post_resource('test', data=data, model=User)
+ post.assert_called_with('test', data=data)