1+ import unittest
2+ from messagebird import Client
3+
4+ try :
5+ from unittest .mock import Mock
6+ except ImportError :
7+ # mock was added to unittest in Python 3.3, but was an external library
8+ # before.
9+ from mock import Mock
10+
11+
12+ class TestCallFlow (unittest .TestCase ):
13+
14+ def test_get_flow (self ):
15+ http_client = Mock ()
16+ http_client .request .return_value = '''{
17+ "data": [
18+ {
19+ "id": "de3ed163-d5fc-45f4-b8c4-7eea7458c635",
20+ "title": "Updated call flow",
21+ "record": false,
22+ "steps": [
23+ {
24+ "id": "3538a6b8-5a2e-4537-8745-f72def6bd393",
25+ "action": "transfer",
26+ "options": {
27+ "destination": "31611223344"
28+ }
29+ }
30+ ],
31+ "createdAt": "2017-03-06T13:34:14Z",
32+ "updatedAt": "2017-03-06T15:02:38Z"
33+ }
34+ ],
35+ "_links": {
36+ "self": "/call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c635"
37+ }
38+ }
39+ '''
40+
41+ call_flow = Client ('' , http_client ).call_flow ('de3ed163-d5fc-45f4-b8c4-7eea7458c635' )
42+ http_client .request .assert_called_once_with ('call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c635' , 'GET' , None )
43+
44+ self .assertEqual ('Updated call flow' , call_flow .title )
45+ self .assertIsNotNone (call_flow .steps )
46+
47+ def test_get_flow_list (self ):
48+ http_client = Mock ()
49+ http_client .request .return_value = '''{
50+ "data": [
51+ {
52+ "id": "de3ed163-d5fc-45f4-b8c4-7eea7458c635",
53+ "title": "Forward call to 31612345678",
54+ "record": false,
55+ "steps": [
56+ {
57+ "id": "3538a6b8-5a2e-4537-8745-f72def6bd393",
58+ "action": "transfer",
59+ "options": {
60+ "destination": "31612345678"
61+ }
62+ }
63+ ],
64+ "createdAt": "2017-03-06T13:34:14Z",
65+ "updatedAt": "2017-03-06T13:34:14Z",
66+ "_links": {
67+ "self": "/call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c635"
68+ }
69+ },
70+ {
71+ "id": "de3ed163-d5fc-45f4-b8c4-7eea7458c634",
72+ "title": "Forward call to 0600123123",
73+ "record": true,
74+ "steps": [
75+ {
76+ "id": "3538a6b8-5a2e-4537-8745-f72def6bd393",
77+ "action": "transfer",
78+ "options": {
79+ "destination": "31612345678"
80+ }
81+ }
82+ ],
83+ "createdAt": "2017-03-06T13:34:14Z",
84+ "updatedAt": "2017-03-06T13:34:14Z",
85+ "_links": {
86+ "self": "/call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c634"
87+ }
88+ }
89+ ],
90+ "_links": {
91+ "self": "/call-flows?page=1"
92+ },
93+ "pagination": {
94+ "totalCount": 2,
95+ "pageCount": 2,
96+ "currentPage": 1,
97+ "perPage": 10
98+ }
99+ }
100+ '''
101+
102+ call_flow_list = Client ('' , http_client ).call_flow_list (20 , 0 )
103+
104+ http_client .request .assert_called_once_with ('call-flows?limit=20&offset=0' , 'GET' , None )
105+
106+ self .assertEqual ('Forward call to 0600123123' , call_flow_list .data [1 ].title )
107+ self .assertEqual (2 , call_flow_list .pagination ['totalCount' ])
108+
109+ def test_numbers_list (self ):
110+ http_client = Mock ()
111+ http_client .request .return_value = '''{
112+ "data": [
113+ {
114+ "id": "13f38f34-7ff4-45b3-8783-8d5b1143f22b",
115+ "number": "31611111111",
116+ "callFlowId": "de3ed163-d5fc-45f4-b8c4-7eea7458c635",
117+ "createdAt": "2017-03-16T13:49:24Z",
118+ "updatedAt": "2017-09-12T08:59:50Z",
119+ "_links": {
120+ "self": "/numbers/13f38f34-7ff4-45b3-8783-8d5b1143f22b"
121+ }
122+ }
123+ ],
124+ "_links": {
125+ "self": "/call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c635/numbers?page=1"
126+ },
127+ "pagination": {
128+ "totalCount": 1,
129+ "pageCount": 1,
130+ "currentPage": 1,
131+ "perPage": 10
132+ }
133+ }
134+ '''
135+
136+ number_list = Client ('' , http_client ).call_flow_numbers_list ('de3ed163-d5fc-45f4-b8c4-7eea7458c635' )
137+
138+ http_client .request .assert_called_once_with ('call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c635/numbers' , 'GET' , None )
139+
140+ self .assertEqual ('31611111111' , number_list .data [0 ].number )
141+ self .assertEqual (1 , number_list .pagination ['totalCount' ])
142+
143+ def test_numbers_add (self ):
144+ http_client = Mock ()
145+ http_client .request .return_value = '{}'
146+
147+ Client ('' , http_client ).call_flow_numbers_add ('de3ed163-d5fc-45f4-b8c4-7eea7458c635' ,
148+ ['31611111111' , '31611111112' ])
149+
150+ params = {'numbers' : ['31611111111' , '31611111112' ]}
151+
152+ http_client .request .assert_called_once_with ('call-flows/de3ed163-d5fc-45f4-b8c4-7eea7458c635/numbers' , 'POST' , params )
0 commit comments