22import requests_mock
33import urllib .parse
44
5- from .fixtures import TOKEN , WORKSPACE , WORKSPACE_ID
5+ from .fixtures import MOCK , TOKEN , WORKSPACE , WORKSPACE_ID
66
77from typeform import Typeform
88from typeform .constants import API_BASE_URL
1111class FormsTestCase (TestCase ):
1212 def setUp (self ):
1313 self .forms = Typeform (TOKEN ).forms
14- form = self .forms .create (dict (title = "Form's test form" , workspace = {'href' : WORKSPACE }))
15- self .formID = form .get ('id' )
14+ if not MOCK :
15+ form = self .forms .create (dict (title = "Form's test form" , workspace = {'href' : WORKSPACE }))
16+ self .formID = form .get ('id' )
17+ else :
18+ self .formID = "MOCK-FORM-ID"
1619
1720 def tearDown (self ):
18- list = self .forms .list (workspaceId = WORKSPACE_ID )
19- forms = list .get ('items' , [])
20- for form in forms :
21- self .forms .delete (form .get ('id' ))
21+ if not MOCK :
22+ list = self .forms .list (workspaceId = WORKSPACE_ID )
23+ forms = list .get ('items' , [])
24+ for form in forms :
25+ self .forms .delete (form .get ('id' ))
2226
2327 def test_forms_returns_method_and_path (self ):
2428 """
2529 get all forms has the correct method and path
2630 """
27- with requests_mock .mock () as m :
31+ with requests_mock .mock (real_http = not MOCK ) as m :
2832 m .get (API_BASE_URL + '/forms' , json = {})
2933 self .forms .list (workspaceId = WORKSPACE_ID )
3034
@@ -36,7 +40,7 @@ def test_forms_correct_params(self):
3640 """
3741 paramters are sent correctly
3842 """
39- with requests_mock .mock () as m :
43+ with requests_mock .mock (real_http = not MOCK ) as m :
4044 m .get (API_BASE_URL + '/forms' , json = {})
4145 self .forms .list (page = 2 , pageSize = 10 , search = 'forms_correct_params' , workspaceId = WORKSPACE_ID )
4246
@@ -64,7 +68,7 @@ def test_forms_get_sets_get_method(self):
6468 """
6569 get sets get method
6670 """
67- with requests_mock .mock () as m :
71+ with requests_mock .mock (real_http = not MOCK ) as m :
6872 m .get (API_BASE_URL + '/forms/' + self .formID , json = {})
6973 self .forms .get (self .formID )
7074
@@ -75,30 +79,31 @@ def test_forms_update_updates_a_form(self):
7579 """
7680 update updates a form
7781 """
78- title = 'forms_update_updates_a_form'
79- result = self .forms .update (self .formID , data = {
80- 'title' : title
81- })
82+ with requests_mock .mock (real_http = not MOCK ) as m :
83+ title = 'forms_update_updates_a_form'
84+ m .put (API_BASE_URL + '/forms/' + self .formID , json = dict (title = title ))
85+ result = self .forms .update (self .formID , data = {
86+ 'title' : title
87+ })
8288
83- self .assertEqual (result .get ('title' ), title )
89+ self .assertEqual (result .get ('title' ), title )
8490
8591 def test_forms_update_as_patch_updates_a_form (self ):
8692 """
8793 update as patch updates a form
8894 """
89- result = self .forms .update (self .formID , patch = True , data = [{
90- 'op' : 'replace' ,
91- 'path' : '/title' ,
92- 'value' : 'forms_update_as_patch_updates_a_form'
93- }])
95+ with requests_mock .mock (real_http = not MOCK ) as m :
96+ m .patch (API_BASE_URL + '/forms/' + self .formID , json = "OK" )
97+ result = self .forms .update (self .formID , patch = True , data = [
98+ dict (op = 'replace' , path = '/title' , value = 'forms_update_as_patch_updates_a_form' )])
9499
95- self .assertEqual (result , 'OK' )
100+ self .assertEqual (result , 'OK' )
96101
97102 def test_forms_update_sets_put_method_in_request_by_default (self ):
98103 """
99104 update sets put method in request by default
100105 """
101- with requests_mock .mock () as m :
106+ with requests_mock .mock (real_http = not MOCK ) as m :
102107 m .put (API_BASE_URL + '/forms/' + self .formID , json = {})
103108 self .forms .update (self .formID , data = {
104109 'title' : 'forms_update_sets_put_method_in_request_by_default'
@@ -112,20 +117,26 @@ def test_forms_delete_removes_the_correct_uid_form(self):
112117 """
113118 delete removes the correct uid form
114119 """
115- get1Result = self .forms .get (self .formID )
116- self .assertEqual (get1Result .get ('id' ), self .formID )
117- self .forms .delete (self .formID )
118- try :
119- self .forms .get (self .formID )
120- except Exception as err :
121- error = str (err )
122- self .assertEqual (error , 'Non existing form with uid %s' % self .formID )
120+ with requests_mock .mock (real_http = not MOCK ) as m :
121+ m .get (API_BASE_URL + '/forms/{}' .format (self .formID ), json = dict (id = str (self .formID )))
122+ m .delete (API_BASE_URL + '/forms/{}' .format (self .formID ), json = {})
123+
124+ get_one_result = self .forms .get (self .formID )
125+ self .assertEqual (get_one_result .get ('id' ), self .formID )
126+ self .forms .delete (self .formID )
127+ m .get (API_BASE_URL + '/forms/{}' .format (self .formID ),
128+ json = dict (code = "FORM_NOT_FOUND" , description = "Non existing form with uid {}" .format (self .formID )))
129+ try :
130+ self .forms .get (self .formID )
131+ except Exception as err :
132+ error = str (err )
133+ self .assertEqual (error , 'Non existing form with uid %s' % self .formID )
123134
124135 def test_forms_create_has_the_correct_path_and_method (self ):
125136 """
126137 create has the correct path and method
127138 """
128- with requests_mock .mock () as m :
139+ with requests_mock .mock (real_http = not MOCK ) as m :
129140 m .post (API_BASE_URL + '/forms' , json = {})
130141 self .forms .create (dict (title = 'forms_create_has_the_correct_path_and_method' , workspace = {'href' : WORKSPACE }))
131142
@@ -138,20 +149,24 @@ def test_forms_create_creates_a_new_form(self):
138149 """
139150 create creates a new form
140151 """
141- createResult = self .forms .create (dict (title = 'forms_create_creates_a_new_form' , workspace = {'href' : WORKSPACE }))
152+ with requests_mock .mock (real_http = not MOCK ) as m :
153+ m .post (API_BASE_URL + '/forms' , json = dict (id = str (self .formID )))
154+ m .get (API_BASE_URL + '/forms/{}' .format (self .formID ), json = dict (id = str (self .formID )))
155+
156+ create_result = self .forms .create (dict (title = 'forms_create_creates_a_new_form' , workspace = {'href' : WORKSPACE }))
142157
143- formID = createResult .get ('id' )
158+ formID = create_result .get ('id' )
144159
145- getResult = self .forms .get (formID )
160+ result = self .forms .get (formID )
146161
147- self .assertIsNone (createResult .get ('code' , None ))
148- self .assertEqual (getResult .get ('id' ), formID )
162+ self .assertIsNone (create_result .get ('code' , None ))
163+ self .assertEqual (result .get ('id' ), formID )
149164
150165 def test_forms_get_messages_has_the_correct_path_and_method (self ):
151166 """
152167 get messages has the correct path and method
153168 """
154- with requests_mock .mock () as m :
169+ with requests_mock .mock (real_http = not MOCK ) as m :
155170 m .get (API_BASE_URL + '/forms/' + self .formID + '/messages' , json = {})
156171 self .forms .messages .get (self .formID )
157172
@@ -164,7 +179,7 @@ def test_forms_update_messages_has_the_correct_path_and_method(self):
164179 """
165180 update messages has the correct path and method
166181 """
167- with requests_mock .mock () as m :
182+ with requests_mock .mock (real_http = not MOCK ) as m :
168183 m .put (API_BASE_URL + '/forms/' + self .formID + '/messages' )
169184 self .forms .messages .update (self .formID )
170185
0 commit comments