Skip to content

Commit

Permalink
Adding tests for Event collection proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
jkeyes committed Feb 6, 2017
1 parent fef908c commit ec61aee
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
29 changes: 29 additions & 0 deletions tests/unit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,20 @@ def get_company(name):
}


def get_event(name="the-event-name"):
return {
"type": "event",
"event_name": name,
"created_at": 1389913941,
"user_id": "314159",
"metadata": {
"type": "user",
"invitee_email": "pi@example.org",
"invite_code": "ADDAFRIEND"
}
}


def page_of_users(include_next_link=False):
page = {
"type": "user.list",
Expand All @@ -182,6 +196,21 @@ def page_of_users(include_next_link=False):
return page


def page_of_events(include_next_link=False):
page = {
"type": "event.list",
"pages": {
"next": None,
},
"events": [
get_event("invited-friend"),
get_event("bought-sub")],
}
if include_next_link:
page["pages"]["next"] = "https://api.intercom.io/events?type=user&intercom_user_id=55a3b&before=144474756550" # noqa
return page


def page_of_companies(include_next_link=False):
page = {
"type": "company.list",
Expand Down
26 changes: 26 additions & 0 deletions tests/unit/test_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@
from datetime import datetime
from intercom.client import Client
from intercom.user import User
from mock import call
from mock import patch
from nose.tools import eq_
from nose.tools import istest
from tests.unit import page_of_events


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

@istest
def it_stops_iterating_if_no_next_link(self):
body = page_of_events(include_next_link=False)
with patch.object(Client, 'get', return_value=body) as mock_method: # noqa
event_names = [event.event_name for event in self.client.events.find_all(
type='user', email='joe@example.com')]
mock_method.assert_called_once_with(
'/events', {'type': 'user', 'email': 'joe@example.com'})
eq_(event_names, ['invited-friend', 'bought-sub']) # noqa

@istest
def it_keeps_iterating_if_next_link(self):
page1 = page_of_events(include_next_link=True)
page2 = page_of_events(include_next_link=False)
side_effect = [page1, page2]
with patch.object(Client, 'get', side_effect=side_effect) as mock_method: # noqa
event_names = [event.event_name for event in self.client.events.find_all(
type='user', email='joe@example.com')]
eq_([call('/events', {'type': 'user', 'email': 'joe@example.com'}),
call('/events?type=user&intercom_user_id=55a3b&before=144474756550', {})], # noqa
mock_method.mock_calls)
eq_(event_names, ['invited-friend', 'bought-sub'] * 2) # noqa

@istest
def it_creates_an_event_with_metadata(self):
data = {
Expand Down

0 comments on commit ec61aee

Please sign in to comment.