diff options
author | 2012-02-09 01:53:06 +0100 | |
---|---|---|
committer | 2012-02-09 01:53:06 +0100 | |
commit | 3ac7f814cf6279e106dfefcf64a13b0318f959ba (patch) | |
tree | 54b9ddcbb55cda9c4de54ed0a641e918cd86a81e /pygithub3/tests/core/test_result.py | |
parent | Fix litle bugs (diff) | |
download | python-github3-3ac7f814cf6279e106dfefcf64a13b0318f959ba.tar.xz python-github3-3ac7f814cf6279e106dfefcf64a13b0318f959ba.zip |
Core tests
core.client
core.result
Diffstat (limited to 'pygithub3/tests/core/test_result.py')
-rw-r--r-- | pygithub3/tests/core/test_result.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/pygithub3/tests/core/test_result.py b/pygithub3/tests/core/test_result.py new file mode 100644 index 0000000..4a3a7f5 --- /dev/null +++ b/pygithub3/tests/core/test_result.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from unittest import TestCase + +from mock import Mock + +from pygithub3.core.client import Client +from pygithub3.core.result import Result, Page +from .utils import (mock_paginate_github_in_GET, + mock_no_paginate_github_in_GET, request) + + +class ResultInitMixin(object): + + def setUp(self): + self.c = Client() + 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) + + def tearDown(self): + self.resource_loads.reset_mock() # It mocks class method + +class TestResultWithPaginate(ResultInitMixin, TestCase): + + @property + def mock(self): + return mock_paginate_github_in_GET + + 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.get_request.assert_called_once_with(request, page=1) + + def test_consumed_are_Pages(self): + pages_that_are_Pages = len( + filter(lambda page: isinstance(page, 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() + self.assertEqual(self.get_request.call_count, 3) + self.assertEqual(self.resource_loads.call_count, 3) + + def test_CACHE_with_renew_iterations(self): + self.r.all() + self.r.all() + self.assertEqual(self.get_request.call_count, 3) + self.assertEqual(len(self.r.getter.cache), 3) + self.assertEqual(self.resource_loads.call_count, 3) + + def test_ITERATOR_calls(self): + self.r.iterator() + self.assertEqual(self.get_request.call_count, 0) + self.assertEqual(self.resource_loads.call_count, 0) + + +class TestResultWithoutPaginate(ResultInitMixin, TestCase): + + @property + def mock(self): + return mock_no_paginate_github_in_GET + + def test_iteration_stop_at_1(self): + self.r.next() + self.assertRaises(StopIteration, self.r.next) + + def test_get_only_1page(self): + self.r.all() + self.assertEqual(self.get_request.call_count, 1) + self.assertEqual(self.resource_loads.call_count, 1) |