6
6
from datetime import datetime
7
7
from intercom .client import Client
8
8
from intercom .user import User
9
+ from mock import call
9
10
from mock import patch
11
+ from nose .tools import eq_
10
12
from nose .tools import istest
13
+ from tests .unit import page_of_events
11
14
12
15
13
16
class EventTest (unittest .TestCase ):
@@ -22,6 +25,29 @@ def setUp(self): # noqa
22
25
name = "Jim Bob" )
23
26
self .created_time = now - 300
24
27
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
+
25
51
@istest
26
52
def it_creates_an_event_with_metadata (self ):
27
53
data = {
0 commit comments