aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/tests
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3/tests')
-rw-r--r--pygithub3/tests/core/test_result.py40
-rw-r--r--pygithub3/tests/services/test_core.py4
-rw-r--r--pygithub3/tests/utils/core.py26
3 files changed, 61 insertions, 9 deletions
diff --git a/pygithub3/tests/core/test_result.py b/pygithub3/tests/core/test_result.py
index a42bd44..b32fb3d 100644
--- a/pygithub3/tests/core/test_result.py
+++ b/pygithub3/tests/core/test_result.py
@@ -5,9 +5,10 @@ from mock import Mock
from pygithub3.tests.utils.core import TestCase
from pygithub3.core.client import Client
-from pygithub3.core.result import Result, Page
+from pygithub3.core.result import smart, normal, base
from pygithub3.tests.utils.core import (mock_paginate_github_in_GET, request,
- mock_no_paginate_github_in_GET)
+ mock_no_paginate_github_in_GET,
+ MockPaginate)
class ResultInitMixin(object):
@@ -17,12 +18,12 @@ class ResultInitMixin(object):
self.get_request = Mock(side_effect=self.mock)
self.resource_loads = request.resource.loads
self.c.get = self.get_request
- self.r = Result(self.c, request)
+ self.r = smart.Result(smart.Method(self.c.get, request))
def tearDown(self):
self.resource_loads.reset_mock() # It mocks class method
-class TestResultWithPaginate(ResultInitMixin, TestCase):
+class TestSmartResultWithPaginate(ResultInitMixin, TestCase):
@property
def mock(self):
@@ -33,12 +34,12 @@ class TestResultWithPaginate(ResultInitMixin, TestCase):
self.assertEqual(self.resource_loads.call_count, 0)
list(self.r)
self.get_request.assert_called_once_with(request, page=1)
+ self.assertEqual(self.resource_loads.call_count, 1)
def test_consumed_are_Pages(self):
pages_that_are_Pages = len(
- filter(lambda page: isinstance(page, Page), list(self.r)))
+ filter(lambda page: isinstance(page, base.Page), list(self.r)))
self.assertEqual(pages_that_are_Pages, 3, 'There are not 3 Pages objs')
- self.assertEqual(self.resource_loads.call_count, 1)
def test_all_iteration_CALLS(self):
self.r.all()
@@ -58,7 +59,7 @@ class TestResultWithPaginate(ResultInitMixin, TestCase):
self.assertEqual(self.resource_loads.call_count, 0)
-class TestResultWithoutPaginate(ResultInitMixin, TestCase):
+class TestSmartResultWithoutPaginate(ResultInitMixin, TestCase):
@property
def mock(self):
@@ -72,3 +73,28 @@ class TestResultWithoutPaginate(ResultInitMixin, TestCase):
self.r.all()
self.assertEqual(self.get_request.call_count, 1)
self.assertEqual(self.resource_loads.call_count, 1)
+
+
+class TestNormalResult(TestSmartResultWithPaginate, TestCase):
+
+ @property
+ def mock(self):
+ return MockPaginate()
+
+ def setUp(self):
+ super(TestNormalResult, self).setUp()
+ self.r = normal.Result(normal.Method(self.c.get, request))
+
+ def test_iteration_CALLS(self):
+ self.assertEqual(self.get_request.call_count, 0)
+ self.assertEqual(self.resource_loads.call_count, 0)
+ list(self.r)
+ self.assertEqual(self.get_request.call_count, 3)
+ self.assertEqual(self.resource_loads.call_count, 3)
+
+ """ Inherit tests. They share behaviour
+ def test_consumed_are_Pages(self):
+ def test_all_iteration_CALLS(self):
+ def test_CACHE_with_renew_iterations(self):
+ def test_ITERATOR_calls(self):
+ """
diff --git a/pygithub3/tests/services/test_core.py b/pygithub3/tests/services/test_core.py
index 8ee1c6e..bd95b34 100644
--- a/pygithub3/tests/services/test_core.py
+++ b/pygithub3/tests/services/test_core.py
@@ -7,7 +7,7 @@ from mock import patch
from pygithub3.tests.utils.core import TestCase
from pygithub3.services.base import Service, MimeTypeMixin
-from pygithub3.core.result import Result
+from pygithub3.core.result import base
from pygithub3.tests.utils.base import DummyRequest, mock_response
from pygithub3.tests.utils.services import _, DummyService
@@ -52,7 +52,7 @@ class TestServiceCalls(TestCase):
def test_GET_result(self, request_method):
result = self.s._get_result(self.r, **self.args)
self.assertFalse(request_method.called)
- self.assertIsInstance(result, Result)
+ self.assertIsInstance(result, base.Result)
@patch.object(requests.sessions.Session, 'request')
diff --git a/pygithub3/tests/utils/core.py b/pygithub3/tests/utils/core.py
index 32170e4..677347a 100644
--- a/pygithub3/tests/utils/core.py
+++ b/pygithub3/tests/utils/core.py
@@ -13,6 +13,8 @@ request = DummyRequest()
json_content = [dict(name='dummy')]
+# To smart results
+
def mock_paginate_github_in_GET(request, page):
def header(page):
return {'link': '<https://d.com/d?page=%s>; rel="last"' % page}
@@ -33,3 +35,27 @@ def mock_no_paginate_github_in_GET(request, page):
response.headers = {}
response.content = [json_content * 3]
return response
+
+
+# To normal results
+class MockPaginate(object):
+
+ def __init__(self):
+ self.counter = 1
+
+ def content(self):
+ if self.counter >= 3:
+ return json_content
+ return json_content * 2
+
+ def header(self):
+ if self.counter >= 3:
+ return {}
+ return {'link': '<https://d.com/d?page=%s>; rel="next"' % self.counter}
+
+ def __call__(self, *args, **kwargs):
+ response = Mock()
+ response.headers = self.header()
+ response.content = self.content()
+ self.counter += 1
+ return response