Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 18a3491

Browse files
committed
Finishing up Event.find_all PR:
* adding tests * updating version number * updating README
1 parent fef908c commit 18a3491

File tree

5 files changed

+61
-1
lines changed

5 files changed

+61
-1
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
Changelog
22
=========
33

4+
* 3.0.2
5+
* Added multipage support for Event.find_all. (`#147 <https://github.com/jkeyes/python-intercom/pull/147>`_)
46
* 3.0.1
57
* Added support for HTTP keep-alive. (`#146 <https://github.com/jkeyes/python-intercom/pull/146>`_)
68
* 3.0

README.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,9 @@ Events
359359
}
360360
)
361361
362+
# Retrieve event list for user with id:'123abc'
363+
intercom.events.find_all(type='user', "intercom_user_id"="123abc)
364+
362365
Metadata Objects support a few simple types that Intercom can present on
363366
your behalf
364367

intercom/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
MultipleMatchingUsersError, RateLimitExceeded, ResourceNotFound,
77
ServerError, ServiceUnavailableError, UnexpectedError, TokenUnauthorizedError)
88

9-
__version__ = '3.0.1'
9+
__version__ = '3.0.2'
1010

1111

1212
RELATED_DOCS_TEXT = "See https://github.com/jkeyes/python-intercom \

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": "[email protected]",
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='[email protected]')]
34+
mock_method.assert_called_once_with(
35+
'/events', {'type': 'user', 'email': '[email protected]'})
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='[email protected]')]
46+
eq_([call('/events', {'type': 'user', 'email': '[email protected]'}),
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)