summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorAlexandre Pretto Nunes <anunes@thoughtworks.com>2014-09-04 19:28:39 -0300
committerAlexandre Pretto Nunes <anunes@thoughtworks.com>2014-09-04 19:29:48 -0300
commitaa40c93c625baecbef79168c2cffd683be1ff8f3 (patch)
tree9eab0a47534c932cd30bf3b2c0bd54f61e985511 /service
parent8f38ab0b6e859358a9d6ddf92467a6dfd7b9fad9 (diff)
Implement mark_as_read for emails
Diffstat (limited to 'service')
-rw-r--r--service/pixelated/adapter/mail_service.py2
-rw-r--r--service/pixelated/adapter/pixelated_mail.py14
-rw-r--r--service/test/adapter/mail_service_test.py7
-rw-r--r--service/test/adapter/pixelated_mail_test.py7
4 files changed, 21 insertions, 9 deletions
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)