@@ -142,3 +142,140 @@ def test_send_should_raise_api_error_for_500_status_code(
142142
143143 with pytest .raises (mt .APIError ):
144144 client .send (mail )
145+
146+ TEMPLATES_URL = "https://mailtrap.io/api/accounts/1/email_templates"
147+ TEMPLATE_DETAIL_URL = "https://mailtrap.io/api/accounts/1/email_templates/5"
148+
149+ @responses .activate
150+ def test_email_templates_should_return_list (self ) -> None :
151+ response_body = [{"id" : 1 }, {"id" : 2 }]
152+ responses .add (responses .GET , self .TEMPLATES_URL , json = response_body )
153+
154+ client = self .get_client ()
155+ result = client .email_templates (1 )
156+
157+ assert result == response_body
158+ assert len (responses .calls ) == 1
159+ request = responses .calls [0 ].request # type: ignore
160+ assert request .headers .items () >= client .headers .items ()
161+
162+ @responses .activate
163+ def test_email_templates_should_raise_error (self ) -> None :
164+ responses .add (
165+ responses .GET ,
166+ self .TEMPLATES_URL ,
167+ json = {"errors" : ["Unauthorized" ]},
168+ status = 401 ,
169+ )
170+
171+ client = self .get_client ()
172+
173+ with pytest .raises (mt .AuthorizationError ):
174+ client .email_templates (1 )
175+
176+ @responses .activate
177+ def test_email_templates_should_raise_api_error (self ) -> None :
178+ responses .add (
179+ responses .GET ,
180+ self .TEMPLATES_URL ,
181+ json = {"errors" : ["fail" ]},
182+ status = 500 ,
183+ )
184+
185+ client = self .get_client ()
186+
187+ with pytest .raises (mt .APIError ):
188+ client .email_templates (1 )
189+
190+ @responses .activate
191+ def test_create_email_template_should_return_created_template (self ) -> None :
192+ template = mt .EmailTemplate (name = "Template" , subject = "s" , category = "Cat" )
193+ response_body = {"id" : 5 }
194+ responses .add (
195+ responses .POST ,
196+ self .TEMPLATES_URL ,
197+ json = response_body ,
198+ status = 201 ,
199+ )
200+
201+ client = self .get_client ()
202+ result = client .create_email_template (1 , template )
203+
204+ assert result == response_body
205+ request = responses .calls [0 ].request # type: ignore
206+ assert request .body == json .dumps (template .api_data ).encode ()
207+
208+ @responses .activate
209+ def test_create_email_template_should_raise_error (self ) -> None :
210+ template = mt .EmailTemplate (name = "Template" , subject = "s" , category = "Cat" )
211+ responses .add (
212+ responses .POST ,
213+ self .TEMPLATES_URL ,
214+ json = {"errors" : ["fail" ]},
215+ status = 500 ,
216+ )
217+
218+ client = self .get_client ()
219+
220+ with pytest .raises (mt .APIError ):
221+ client .create_email_template (1 , template )
222+
223+ @responses .activate
224+ def test_update_email_template_should_return_updated_template (self ) -> None :
225+ template = mt .EmailTemplate (name = "Template" , subject = "s" , category = "Cat" )
226+ response_body = {"id" : 5 , "name" : "Template" }
227+ responses .add (
228+ responses .PATCH ,
229+ self .TEMPLATE_DETAIL_URL ,
230+ json = response_body ,
231+ )
232+
233+ client = self .get_client ()
234+ result = client .update_email_template (1 , 5 , template )
235+
236+ assert result == response_body
237+ request = responses .calls [0 ].request # type: ignore
238+ assert request .body == json .dumps (template .api_data ).encode ()
239+
240+ @responses .activate
241+ def test_update_email_template_should_raise_error (self ) -> None :
242+ template = mt .EmailTemplate (name = "Template" , subject = "s" , category = "Cat" )
243+ responses .add (
244+ responses .PATCH ,
245+ self .TEMPLATE_DETAIL_URL ,
246+ json = {"errors" : ["fail" ]},
247+ status = 401 ,
248+ )
249+
250+ client = self .get_client ()
251+
252+ with pytest .raises (mt .AuthorizationError ):
253+ client .update_email_template (1 , 5 , template )
254+
255+ @responses .activate
256+ def test_delete_email_template_should_return_none (self ) -> None :
257+ responses .add (
258+ responses .DELETE ,
259+ self .TEMPLATE_DETAIL_URL ,
260+ status = 204 ,
261+ )
262+
263+ client = self .get_client ()
264+ result = client .delete_email_template (1 , 5 )
265+
266+ assert result is None
267+ assert len (responses .calls ) == 1
268+
269+ @responses .activate
270+ def test_delete_email_template_should_raise_error (self ) -> None :
271+ responses .add (
272+ responses .DELETE ,
273+ self .TEMPLATE_DETAIL_URL ,
274+ json = {"errors" : ["fail" ]},
275+ status = 500 ,
276+ )
277+
278+ client = self .get_client ()
279+
280+ with pytest .raises (mt .APIError ):
281+ client .delete_email_template (1 , 5 )
0 commit comments