From aa40c93c625baecbef79168c2cffd683be1ff8f3 Mon Sep 17 00:00:00 2001 From: Alexandre Pretto Nunes Date: Thu, 4 Sep 2014 19:28:39 -0300 Subject: Implement mark_as_read for emails --- service/pixelated/adapter/mail_service.py | 2 +- service/pixelated/adapter/pixelated_mail.py | 14 +++++++++----- service/test/adapter/mail_service_test.py | 7 +++++++ service/test/adapter/pixelated_mail_test.py | 7 ++++--- 4 files changed, 21 insertions(+), 9 deletions(-) (limited to 'service') diff --git a/service/pixelated/adapter/mail_service.py b/service/pixelated/adapter/mail_service.py index 3cbbe90e..e3444b9f 100644 --- a/service/pixelated/adapter/mail_service.py +++ b/service/pixelated/adapter/mail_service.py @@ -62,7 +62,7 @@ class MailService: raise NotImplementedError() def mark_as_read(self, mail_id): - raise NotImplementedError() + return self.mail(mail_id).mark_as_read() def tags_for_thread(self, thread): raise NotImplementedError() diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py index cf0e12a5..8ed27262 100644 --- a/service/pixelated/adapter/pixelated_mail.py +++ b/service/pixelated/adapter/pixelated_mail.py @@ -33,7 +33,7 @@ class PixelatedMail: mail.headers = mail._extract_headers() mail.date = PixelatedMail._get_date(mail.headers) mail.ident = leap_mail.getUID() - mail.status = mail._extract_status() + mail.status = set(mail._extract_status()) mail.security_casing = {} mail.tags = mail._extract_tags() return mail @@ -75,6 +75,9 @@ class PixelatedMail: self._persist_mail_tags(tags) return self.tags + def mark_as_read(self): + self.status.add("read") + def _persist_mail_tags(self, current_tags): tags_headers = [tag.name for tag in current_tags] hdoc = self.leap_mail.hdoc @@ -126,8 +129,9 @@ class PixelatedMail: def from_dict(mail_dict): mail = PixelatedMail() - mail.headers = mail_dict['header'] - mail.body = mail_dict['body'] - mail.ident = mail_dict['ident'] - mail.tags = mail_dict['tags'] + mail.headers = mail_dict.get('header', {}) + mail.body = mail_dict.get('body', '') + mail.ident = mail_dict.get('ident', None) + mail.tags = mail_dict.get('tags', []) + mail.status = set(mail_dict.get('status', [])) return mail diff --git a/service/test/adapter/mail_service_test.py b/service/test/adapter/mail_service_test.py index bd45c4bf..b6082b45 100644 --- a/service/test/adapter/mail_service_test.py +++ b/service/test/adapter/mail_service_test.py @@ -40,3 +40,10 @@ class TestMailService(unittest.TestCase): self.mail_service.send(mail) verify(self.mail_sender).sendmail(mail) + + def test_mark_as_read(self): + mail = mock() + when(self.mail_service).mail(any()).thenReturn(mail) + self.mail_service.mark_as_read(1) + + verify(mail).mark_as_read() diff --git a/service/test/adapter/pixelated_mail_test.py b/service/test/adapter/pixelated_mail_test.py index 77f9738f..2e62bc41 100644 --- a/service/test/adapter/pixelated_mail_test.py +++ b/service/test/adapter/pixelated_mail_test.py @@ -102,8 +102,9 @@ class TestPixelatedMail(unittest.TestCase): self.assertEquals(pixelated_mail.headers['bcc'], ["nlima@example.com", "ddornelles@example.com" ]) self.assertEquals(pixelated_mail.headers['cc'], ["nlima@example.com", "ddornelles@example.com" ]) + def test_mark_as_read(self): + mail = PixelatedMail.from_dict(self.mail_dict) + mail.mark_as_read() - - - + self.assertIn("read", mail.status) -- cgit v1.2.3