aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/tests/core/test_result.py
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2012-02-09 01:53:06 +0100
committerDavid Medina <davidmedina9@gmail.com>2012-02-09 01:53:06 +0100
commit3ac7f814cf6279e106dfefcf64a13b0318f959ba (patch)
tree54b9ddcbb55cda9c4de54ed0a641e918cd86a81e /pygithub3/tests/core/test_result.py
parentFix litle bugs (diff)
downloadpython-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.py75
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)