|
1 | 1 | # -*- coding: utf-8 -*- |
2 | 2 |
|
3 | | -import httpretty |
4 | | -import json |
5 | | -import re |
6 | 3 | import unittest |
7 | 4 |
|
| 5 | +from intercom import Intercom |
8 | 6 | from intercom import User |
| 7 | +from mock import call |
| 8 | +from mock import patch |
9 | 9 | from nose.tools import eq_ |
10 | 10 | from nose.tools import istest |
11 | 11 | from tests.unit import page_of_users |
12 | 12 |
|
13 | | -get = httpretty.GET |
14 | | -r = re.compile |
15 | | - |
16 | 13 |
|
17 | 14 | class CollectionProxyTest(unittest.TestCase): |
18 | 15 |
|
19 | 16 | @istest |
20 | | - @httpretty.activate |
21 | 17 | def it_stops_iterating_if_no_next_link(self): |
22 | | - body = json.dumps(page_of_users(include_next_link=False)) |
23 | | - httpretty.register_uri(get, r(r"/users"), body=body) |
24 | | - emails = [user.email for user in User.all()] |
25 | | - eq_(emails, ['user1@example.com', 'user2@example.com', 'user3@example.com']) # noqa |
| 18 | + body = page_of_users(include_next_link=False) |
| 19 | + with patch.object(Intercom, 'get', return_value=body) as mock_method: |
| 20 | + emails = [user.email for user in User.all()] |
| 21 | + mock_method.assert_called_once_with('/users') |
| 22 | + eq_(emails, ['user1@example.com', 'user2@example.com', 'user3@example.com']) # noqa |
26 | 23 |
|
27 | 24 | @istest |
28 | | - @httpretty.activate |
29 | 25 | def it_keeps_iterating_if_next_link(self): |
30 | | - page1 = json.dumps(page_of_users(include_next_link=True)) |
31 | | - page2 = json.dumps(page_of_users(include_next_link=False)) |
32 | | - httpretty.register_uri( |
33 | | - get, r(r"https://api.intercom.io/users$"), body=page1, |
34 | | - match_querystring=True) |
35 | | - httpretty.register_uri( |
36 | | - get, r(r"https://api.intercom.io/users\?per_page=50&page=2"), |
37 | | - body=page2, match_querystring=True) |
38 | | - emails = [user.email for user in User.all()] |
39 | | - eq_(emails, ['user1@example.com', 'user2@example.com', 'user3@example.com'] * 2) # noqa |
| 26 | + page1 = page_of_users(include_next_link=True) |
| 27 | + page2 = page_of_users(include_next_link=False) |
| 28 | + side_effect = [page1, page2] |
| 29 | + with patch.object(Intercom, 'get', side_effect=side_effect) as mock_method: # noqa |
| 30 | + emails = [user.email for user in User.all()] |
| 31 | + eq_([call('/users'), call('https://api.intercom.io/users?per_page=50&page=2')], # noqa |
| 32 | + mock_method.mock_calls) |
| 33 | + eq_(emails, ['user1@example.com', 'user2@example.com', 'user3@example.com'] * 2) # noqa |
40 | 34 |
|
41 | 35 | @istest |
42 | | - @httpretty.activate |
43 | 36 | def it_supports_indexed_array_access(self): |
44 | | - body = json.dumps(page_of_users(include_next_link=False)) |
45 | | - httpretty.register_uri(get, r(r"/users$"), body=body) |
46 | | - eq_(User.all()[0].email, 'user1@example.com') |
| 37 | + body = page_of_users(include_next_link=False) |
| 38 | + with patch.object(Intercom, 'get', return_value=body) as mock_method: |
| 39 | + eq_(User.all()[0].email, 'user1@example.com') |
| 40 | + mock_method.assert_called_once_with('/users') |
47 | 41 |
|
48 | 42 | @istest |
49 | | - @httpretty.activate |
50 | 43 | def it_supports_querying(self): |
51 | | - body = json.dumps(page_of_users(include_next_link=False)) |
52 | | - httpretty.register_uri(get, r(r"/users$"), body=body) |
53 | | - emails = [user.email for user in User.find_all(tag_name='Taggart J')] |
54 | | - eq_(emails, ['user1@example.com', 'user2@example.com', 'user3@example.com']) # noqa |
| 44 | + body = page_of_users(include_next_link=False) |
| 45 | + with patch.object(Intercom, 'get', return_value=body) as mock_method: |
| 46 | + emails = [user.email for user in User.find_all(tag_name='Taggart J')] # noqa |
| 47 | + eq_(emails, ['user1@example.com', 'user2@example.com', 'user3@example.com']) # noqa |
| 48 | + mock_method.assert_called_once_with('/users', tag_name='Taggart J') |
0 commit comments