diff options
Diffstat (limited to 'pygithub3/tests')
-rw-r--r-- | pygithub3/tests/core/test_result.py | 40 | ||||
-rw-r--r-- | pygithub3/tests/services/test_core.py | 4 | ||||
-rw-r--r-- | pygithub3/tests/utils/core.py | 26 |
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 |