summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorBruno Wagner Goncalves and Patrick Maia <pixelated-team+bwagner+pmaia@thoughtworks.com>2014-08-14 12:11:48 -0300
committerPatrick Maia <patrickjourdanmaia@gmail.com>2014-08-14 12:11:48 -0300
commit5b2538cd3cd5cb012021b7043a2ef427b7ace89a (patch)
tree027387ad96f09ce96a03e12abaa66731009c2250 /service
parent998f8d33fcef28c90365cd58f0820683e518e398 (diff)
Update mail with new tags should be working now
Diffstat (limited to 'service')
-rw-r--r--service/app/adapter/mail_service.py17
-rw-r--r--service/app/pixelated_user_agent.py3
-rw-r--r--service/test/adapter/mail_service_test.py42
3 files changed, 51 insertions, 11 deletions
diff --git a/service/app/adapter/mail_service.py b/service/app/adapter/mail_service.py
index b5ae09f2..fb5b52c3 100644
--- a/service/app/adapter/mail_service.py
+++ b/service/app/adapter/mail_service.py
@@ -54,6 +54,23 @@ class MailService:
def mails(self, query):
return self.mailbox.messages or []
+ def update_mail(self, dict_mail):
+ # Iterating over messages because messages.getUID() is not trustworthy
+ mail = None
+ for message in self.mailbox.messages:
+ if message.getUID() == dict_mail['ident']:
+ mail = PixelatedMail(message)
+
+ new_tags = mail.update_tags(dict_mail['tags'])
+
+ self._update_tag_list(new_tags)
+
+ return mail
+
+ def _update_tag_list(self, tags):
+ for tag in tags:
+ self.tags.add(tag)
+
def _switch_mailbox(self, name):
mailbox = None
if name in self.SPECIAL_BOXES:
diff --git a/service/app/pixelated_user_agent.py b/service/app/pixelated_user_agent.py
index 75e84c3c..2d0dc4b8 100644
--- a/service/app/pixelated_user_agent.py
+++ b/service/app/pixelated_user_agent.py
@@ -49,7 +49,8 @@ def save_draft_or_send():
@app.route('/mails', methods=['PUT'])
def update_draft():
- ident = mail_service.save_draft(converter.to_mail(request.json, account))
+ raw_mail = json.parse(request.json)
+ ident = mail_service.update_mail(raw_mail)
return respond_json({'ident': ident})
diff --git a/service/test/adapter/mail_service_test.py b/service/test/adapter/mail_service_test.py
index 0828f20a..4751413d 100644
--- a/service/test/adapter/mail_service_test.py
+++ b/service/test/adapter/mail_service_test.py
@@ -1,17 +1,39 @@
import unittest
from app.adapter.mail_service import MailService
-
-
-class MailboxCollision(Exception):
- pass
-
-
-class MailboxException(Exception):
- pass
+from mock import Mock, MagicMock, patch
+import test_helper
+from app.tags import Tag
class TestMailService(unittest.TestCase):
- def setUp(self):
- self.mail_service = MailService()
+ def _raw_mail(self):
+ return {
+ "header":
+ {
+ "to":["p@k.s"],
+ "from":"a@y.t",
+ "subject":"Test",
+ "date":"2007-09-28T06:11:03-03:00"
+ },
+ "ident":6,
+ "tags":["instagramer"],
+ "status":[],
+ "security_casing":{},
+ "draft_reply_for":[],
+ "body":"teste"
+ }
+
+ def test_custom_tags_get_created_if_not_exists(self):
+ MailService._open_leap_session = lambda self: None
+ MailService.mailbox = Mock(messages=[test_helper.leap_mail(uid=6)])
+ MailService.account = Mock(return_value=MagicMock())
+
+ mailservice = MailService()
+
+ raw_mail = self._raw_mail()
+ raw_mail['tags'].append('my_new_tag')
+ mails = mailservice.update_mail(raw_mail)
+
+ self.assertIn(Tag('my_new_tag'), mailservice.all_tags())