From 912c3e5cb9a11273d7a4d33c0e7dfb438801a184 Mon Sep 17 00:00:00 2001 From: Eli Mydlarz Date: Thu, 20 Aug 2015 15:59:54 +1000 Subject: Eli: Marking sent emails as read --- service/pixelated/adapter/services/mail_service.py | 2 ++ service/test/unit/adapter/test_mail_service.py | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py index b3f58448..6ae34472 100644 --- a/service/pixelated/adapter/services/mail_service.py +++ b/service/pixelated/adapter/services/mail_service.py @@ -98,6 +98,8 @@ class MailService(object): if last_draft_ident: yield self.mail_store.delete_mail(last_draft_ident) sent_mail = yield self.mail_store.add_mail('SENT', mail.raw) + sent_mail.flags.add(Status.SEEN) + yield self.mail_store.update_mail(sent_mail) defer.returnValue(sent_mail) @defer.inlineCallbacks diff --git a/service/test/unit/adapter/test_mail_service.py b/service/test/unit/adapter/test_mail_service.py index de140997..043e3913 100644 --- a/service/test/unit/adapter/test_mail_service.py +++ b/service/test/unit/adapter/test_mail_service.py @@ -66,12 +66,33 @@ class TestMailService(unittest.TestCase): deferred_success = defer.succeed(None) when(self.mail_sender).sendmail(ANY()).thenReturn(deferred_success) + sent_mail = LeapMail('id', 'INBOX') + add_mail_deferral = defer.succeed(sent_mail) + when(self.mail_store).add_mail('SENT', ANY()).thenReturn(add_mail_deferral) + yield self.mail_service.send_mail({'ident': '12'}) verify(self.mail_sender).sendmail(mail) verify(self.mail_store).add_mail('SENT', 'raw mail') verify(self.mail_store).delete_mail('12') + @defer.inlineCallbacks + def test_send_mail_marks_as_read(self): + mail = LeapMail('id', 'INBOX') + when(mail).raw = 'raw mail' + when(InputMail).from_dict(ANY()).thenReturn(mail) + when(self.mail_store).delete_mail('12').thenReturn(defer.succeed(None)) + when(self.mail_sender).sendmail(ANY()).thenReturn(defer.succeed(None)) + + sent_mail = LeapMail('id', 'INBOX') + add_mail_deferral = defer.succeed(sent_mail) + when(self.mail_store).add_mail('SENT', ANY()).thenReturn(add_mail_deferral) + + yield self.mail_service.send_mail({'ident': '12'}) + + self.assertIn(Status.SEEN, sent_mail.flags) + verify(self.mail_store).update_mail(sent_mail) + @defer.inlineCallbacks def test_send_mail_does_not_delete_draft_on_error(self): when(InputMail).from_dict(ANY()).thenReturn('inputmail') -- cgit v1.2.3