summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaeff <hi@kaeff.net>2015-09-04 18:24:38 +0200
committerkaeff <hi@kaeff.net>2015-09-04 18:34:27 +0200
commit5421b5aab20daa59bc378191522db009a557aa68 (patch)
tree7ea0e9e3de4fe1f2a82f06ae4085dfebd7eade76
parentd044a34e9b5a0c341581daae03ba40fc72005170 (diff)
Prepare removing SoledadQuerier from Mail
Discovered that Mail#save was still using SoledadQuerier. There were 3 methods using it: - update_tags: Covered by MailService -> moved test & fixed impl - mark_as_read: Already implemented on MailService -> removed - mark_as_unread: Still needs to be moved - remove_all_tags: Unused -> deleted - mark_as_not_recent: Unused -> deleted Issue: #432
-rw-r--r--service/pixelated/adapter/model/mail.py37
-rw-r--r--service/pixelated/adapter/services/mail_service.py2
-rw-r--r--service/test/unit/adapter/test_mail.py22
-rw-r--r--service/test/unit/adapter/test_mail_service.py11
4 files changed, 12 insertions, 60 deletions
diff --git a/service/pixelated/adapter/model/mail.py b/service/pixelated/adapter/model/mail.py
index 733678db..53b86aaf 100644
--- a/service/pixelated/adapter/model/mail.py
+++ b/service/pixelated/adapter/model/mail.py
@@ -436,46 +436,9 @@ class PixelatedMail(Mail):
def flags(self):
return self.fdoc.content['flags']
- def save(self):
- return self.querier.save_mail(self)
-
def set_mailbox(self, mailbox_name):
self.fdoc.content['mbox'] = mailbox_name
- def remove_all_tags(self):
- return self.update_tags(set([]))
-
- @defer.inlineCallbacks
- def update_tags(self, tags):
- yield self._persist_mail_tags(tags)
- defer.returnValue(self.tags)
-
- @defer.inlineCallbacks
- def mark_as_read(self):
- if Status.SEEN in self.flags:
- defer.returnValue(self)
- else:
- self.flags.append(Status.SEEN)
- yield self.save()
- defer.returnValue(self)
-
- @defer.inlineCallbacks
- def mark_as_unread(self):
- if Status.SEEN in self.flags:
- self.flags.remove(Status.SEEN)
- yield self.save()
- defer.returnValue(self)
-
- def mark_as_not_recent(self):
- if Status.RECENT in self.flags:
- self.flags.remove(Status.RECENT)
- self.save()
- return self
-
- def _persist_mail_tags(self, current_tags):
- self.fdoc.content['tags'] = json.dumps(list(current_tags))
- return self.save()
-
def has_tag(self, tag):
return tag in self.tags
diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py
index 789d159e..d9cb6517 100644
--- a/service/pixelated/adapter/services/mail_service.py
+++ b/service/pixelated/adapter/services/mail_service.py
@@ -51,7 +51,7 @@ class MailService(object):
raise ValueError('None of the following words can be used as tags: ' + ' '.join(reserved_words))
new_tags = self._favor_existing_tags_casing(new_tags)
mail = yield self.mail(mail_id)
- mail.tags |= set(new_tags)
+ mail.tags = set(new_tags)
yield self.mail_store.update_mail(mail)
defer.returnValue(mail)
diff --git a/service/test/unit/adapter/test_mail.py b/service/test/unit/adapter/test_mail.py
index 03a37c1f..79039b75 100644
--- a/service/test/unit/adapter/test_mail.py
+++ b/service/test/unit/adapter/test_mail.py
@@ -91,28 +91,6 @@ class TestPixelatedMail(unittest.TestCase):
self.assertEqual(mail.headers['Date'], date_expected)
- @defer.inlineCallbacks
- def test_update_tags_return_a_set_with_the_current_tags(self):
- soledad_docs = test_helper.leap_mail(extra_headers={'X-tags': '["custom_1", "custom_2"]'})
- pixelated_mail = PixelatedMail.from_soledad(*soledad_docs, soledad_querier=self.querier)
-
- current_tags = yield pixelated_mail.update_tags({'custom_1', 'custom_3'})
- self.assertEquals({'custom_3', 'custom_1'}, current_tags)
-
- def test_mark_as_read(self):
- mail = PixelatedMail.from_soledad(*test_helper.leap_mail(flags=[]), soledad_querier=self.querier)
-
- mail.mark_as_read()
-
- self.assertEquals(mail.fdoc.content['flags'], ['\\Seen'])
-
- def test_mark_as_not_recent(self):
- mail = PixelatedMail.from_soledad(*test_helper.leap_mail(flags=['\\Recent']), soledad_querier=self.querier)
-
- mail.mark_as_not_recent()
-
- self.assertEquals(mail.fdoc.content['flags'], [])
-
def test_get_for_save_adds_from(self):
InputMail.FROM_EMAIL_ADDRESS = 'me@pixelated.org'
headers = {'Subject': 'The subject',
diff --git a/service/test/unit/adapter/test_mail_service.py b/service/test/unit/adapter/test_mail_service.py
index 677745f2..7dd68706 100644
--- a/service/test/unit/adapter/test_mail_service.py
+++ b/service/test/unit/adapter/test_mail_service.py
@@ -138,3 +138,14 @@ class TestMailService(unittest.TestCase):
attachment = yield self.mail_service.attachment('some attachment id')
self.assertEqual(attachment_dict, attachment)
+
+ @defer.inlineCallbacks
+ def test_update_tags_return_a_set_with_the_current_tags(self):
+ mail = LeapMail(1, 'INBOX', tags={'custom_1', 'custom_2'})
+ when(self.mail_store).get_mail(1, include_body=True).thenReturn(mail)
+ when(self.search_engine).tags(query='', skip_default_tags=True).thenReturn([])
+
+ updated_mail = yield self.mail_service.update_tags(1, {'custom_1', 'custom_3'})
+
+ verify(self.mail_store).update_mail(mail)
+ self.assertEqual({'custom_1', 'custom_3'}, updated_mail.tags)