Skip to content

Commit ec61aee

Browse files
committed
Adding tests for Event collection proxy
1 parent fef908c commit ec61aee

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

tests/unit/__init__.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,20 @@ def get_company(name):
161161
}
162162

163163

164+
def get_event(name="the-event-name"):
165+
return {
166+
"type": "event",
167+
"event_name": name,
168+
"created_at": 1389913941,
169+
"user_id": "314159",
170+
"metadata": {
171+
"type": "user",
172+
"invitee_email": "pi@example.org",
173+
"invite_code": "ADDAFRIEND"
174+
}
175+
}
176+
177+
164178
def page_of_users(include_next_link=False):
165179
page = {
166180
"type": "user.list",
@@ -182,6 +196,21 @@ def page_of_users(include_next_link=False):
182196
return page
183197

184198

199+
def page_of_events(include_next_link=False):
200+
page = {
201+
"type": "event.list",
202+
"pages": {
203+
"next": None,
204+
},
205+
"events": [
206+
get_event("invited-friend"),
207+
get_event("bought-sub")],
208+
}
209+
if include_next_link:
210+
page["pages"]["next"] = "https://api.intercom.io/events?type=user&intercom_user_id=55a3b&before=144474756550" # noqa
211+
return page
212+
213+
185214
def page_of_companies(include_next_link=False):
186215
page = {
187216
"type": "company.list",

tests/unit/test_event.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
from datetime import datetime
77
from intercom.client import Client
88
from intercom.user import User
9+
from mock import call
910
from mock import patch
11+
from nose.tools import eq_
1012
from nose.tools import istest
13+
from tests.unit import page_of_events
1114

1215

1316
class EventTest(unittest.TestCase):
@@ -22,6 +25,29 @@ def setUp(self): # noqa
2225
name="Jim Bob")
2326
self.created_time = now - 300
2427

28+
@istest
29+
def it_stops_iterating_if_no_next_link(self):
30+
body = page_of_events(include_next_link=False)
31+
with patch.object(Client, 'get', return_value=body) as mock_method: # noqa
32+
event_names = [event.event_name for event in self.client.events.find_all(
33+
type='user', email='joe@example.com')]
34+
mock_method.assert_called_once_with(
35+
'/events', {'type': 'user', 'email': 'joe@example.com'})
36+
eq_(event_names, ['invited-friend', 'bought-sub']) # noqa
37+
38+
@istest
39+
def it_keeps_iterating_if_next_link(self):
40+
page1 = page_of_events(include_next_link=True)
41+
page2 = page_of_events(include_next_link=False)
42+
side_effect = [page1, page2]
43+
with patch.object(Client, 'get', side_effect=side_effect) as mock_method: # noqa
44+
event_names = [event.event_name for event in self.client.events.find_all(
45+
type='user', email='joe@example.com')]
46+
eq_([call('/events', {'type': 'user', 'email': 'joe@example.com'}),
47+
call('/events?type=user&intercom_user_id=55a3b&before=144474756550', {})], # noqa
48+
mock_method.mock_calls)
49+
eq_(event_names, ['invited-friend', 'bought-sub'] * 2) # noqa
50+
2551
@istest
2652
def it_creates_an_event_with_metadata(self):
2753
data = {

0 commit comments

Comments
 (0)