66from datetime import datetime
77from intercom .client import Client
88from intercom .user import User
9+ from mock import call
910from mock import patch
11+ from nose .tools import eq_
1012from nose .tools import istest
13+ from tests .unit import page_of_events
1114
1215
1316class 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