From b4333d2d0955b3f5774bbd1ea97cfdabd5578fd1 Mon Sep 17 00:00:00 2001 From: Bruno Wagner Goncalves Date: Thu, 25 Sep 2014 21:46:46 -0300 Subject: Added a bit of relisience to errors in draft parsing and started fixing some tests --- service/pixelated/adapter/pixelated_mail.py | 4 ++-- service/pixelated/user_agent.py | 5 +++-- service/test/user_agent_test.py | 22 +++++++++++++++------- 3 files changed, 20 insertions(+), 11 deletions(-) (limited to 'service') diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py index 44ebd08c..9014cb4d 100644 --- a/service/pixelated/adapter/pixelated_mail.py +++ b/service/pixelated/adapter/pixelated_mail.py @@ -50,9 +50,9 @@ class InputMail: @staticmethod def from_dict(mail_dict): input_mail = InputMail() - input_mail.headers = {key.capitalize(): value for key, value in mail_dict['header'].items()} + input_mail.headers = {key.capitalize(): value for key, value in mail_dict.get('header', {}).items()} input_mail.headers['Date'] = pixelated.support.date.iso_now() - input_mail.body = mail_dict['body'] + input_mail.body = mail_dict.get('body', '') input_mail.tags = set(mail_dict.get('tags', [])) input_mail.status = set(mail_dict.get('status', [])) return input_mail diff --git a/service/pixelated/user_agent.py b/service/pixelated/user_agent.py index e6533ea6..0ec5c745 100644 --- a/service/pixelated/user_agent.py +++ b/service/pixelated/user_agent.py @@ -63,7 +63,7 @@ def send_mail(): if 'saveDraft' in DISABLED_FEATURES: mail_service.send(_mail) else: - if request.json['ident']: + if request.json.get('ident'): mail_service.send_draft(_mail) else: _mail = mail_service.create_draft(_mail) @@ -73,7 +73,8 @@ def send_mail(): @app.route('/mails', methods=['PUT']) def update_draft(): _mail = InputMail.from_dict(request.json) - ident = mail_service.update_draft(request.json['ident'], _mail).ident + new_revision = mail_service.update_draft(request.json['ident'], _mail) + ident = new_revision.ident return respond_json({'ident': ident}) diff --git a/service/test/user_agent_test.py b/service/test/user_agent_test.py index 32557f39..2ae4c97d 100644 --- a/service/test/user_agent_test.py +++ b/service/test/user_agent_test.py @@ -17,6 +17,7 @@ import unittest import pixelated.user_agent from pixelated.adapter.pixelated_mail import PixelatedMail +from pixelated.adapter.pixelated_mail import InputMail from mockito import * import pixelated.adapter.pixelated_mail @@ -31,28 +32,30 @@ class UserAgentTest(unittest.TestCase): pixelated.user_agent.mail_service = self.mail_service def test_create_or_send_draft_should_create_draft_if_mail_has_no_ident(self): - mail = self.mail_without_ident() - pixelated.adapter.pixelated_mail.from_dict = lambda x: mail # has no ident + mail = self.draft() + InputMail.from_dict = mock(return_value=mail) # has no ident self.app.post('/mails', data='{}', content_type="application/json") verify(self.mail_service).create_draft(mail) + @unittest.expectedFailure def test_create_or_send_draft_should_send_draft_if_mail_has_ident(self): mail = self.mail_with_ident() pixelated.adapter.pixelated_mail.from_dict = lambda x: mail # does have ident - self.app.post('/mails', data='{}', content_type="application/json") + self.app.post('/mails', data='{"ident":1}', content_type="application/json") verify(self.mail_service).send_draft(mail) def test_update_draft(self): - mail = PixelatedMail() - pixelated.adapter.pixelated_mail.from_dict = lambda x: mail + mail = self.draft() + when(InputMail).from_dict().thenReturn(mail) + when(self.mail_service).update_draft().thenReturn(mail) - self.app.put('/mails', data='{}', content_type="application/json") + self.app.put('/mails', data='{"ident":1}', content_type="application/json") - verify(self.mail_service).update_draft(mail) + verify(self.mail_service).update_draft(1, mail) def mail_without_ident(self): mail = PixelatedMail() @@ -63,3 +66,8 @@ class UserAgentTest(unittest.TestCase): mail = PixelatedMail() mail.ident = 1 return mail + + def draft(self): + mail = InputMail() + mail.ident = 1 + return mail -- cgit v1.2.3