forked from sigmavirus24/github3.py
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_structs.py
79 lines (60 loc) · 2.6 KB
/
test_structs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import github3
from github3.structs import GitHubIterator
from tests.utils import BaseCase, mock
class TestGitHubIterator(BaseCase):
def setUp(self):
super(TestGitHubIterator, self).setUp()
self.api_url = 'https://api.github.com/users'
self.num = 10
self.i = GitHubIterator(self.num, self.api_url, github3.users.User,
self.g)
def test_headers(self):
i = GitHubIterator(self.i.count, self.i.url, self.i.cls, self.g,
etag='"foobarbogus"')
assert i.headers.get('If-None-Match') == '"foobarbogus"'
def test_repr(self):
assert repr(self.i) == '<GitHubIterator [{0}, /users]>'.format(
self.num)
def test_nexts(self):
self.response('user', _iter=True)
self.get(self.api_url)
self.conf = {'params': {'per_page': 10}, 'headers': {}}
self.j = GitHubIterator(self.num, self.api_url, github3.users.User,
self.g)
assert self.j.next().login == next(self.i).login
self.mock_assertions()
def test_catch_etags(self):
self.response('user', _iter=True, etag='"foobarbogus"')
self.get(self.api_url)
self.conf = {'params': {'per_page': 10}, 'headers': {}}
assert isinstance(next(self.i), github3.users.User)
assert self.i.etag == '"foobarbogus"'
self.mock_assertions()
def test_catch_None(self):
self.response('', 200)
self.get(self.api_url)
self.conf = {'params': {'per_page': 10}, 'headers': {}}
self.assertRaises(StopIteration, next, self.i)
self.mock_assertions()
def test_entire_while_loop(self):
self.response('user', _iter=True)
self.get(self.api_url)
self.conf = {'params': {'per_page': 10}, 'headers': {}}
assert isinstance(next(self.i), github3.users.User)
self.assertRaises(StopIteration, next, self.i)
self.mock_assertions()
def test_count_reaches_0(self):
self.response('user', _iter=True)
self.get(self.api_url)
self.conf = {'params': {'per_page': 1}, 'headers': {}}
self.i = GitHubIterator(1, self.api_url, github3.users.User, self.g)
assert isinstance(next(self.i), github3.users.User)
self.assertRaises(StopIteration, next, self.i)
self.mock_assertions()
def test_refresh(self):
with mock.patch.object(GitHubIterator, '__iter__') as i:
self.i.refresh()
i.__iter__.assert_called()
i.reset_mock()
self.i.refresh(True)
i.__iter__.assert_called()