summaryrefslogtreecommitdiff
path: root/py-fake-service/app/adapter
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-08-12 14:34:27 -0300
committerDuda Dornelles <ddornell@thoughtworks.com>2014-08-12 14:54:29 -0300
commitcce7b837e4180167d426224ef625e12a8abc4994 (patch)
tree33716957d809f3345317ee91c9fb067c996eb761 /py-fake-service/app/adapter
parent103180329b3aad65fa816056c2ca2e9f51424507 (diff)
updating tags on py-fake-service
Diffstat (limited to 'py-fake-service/app/adapter')
-rw-r--r--py-fake-service/app/adapter/mail_service.py22
-rw-r--r--py-fake-service/app/adapter/mailset.py16
-rw-r--r--py-fake-service/app/adapter/tag.py3
-rw-r--r--py-fake-service/app/adapter/tagsset.py7
4 files changed, 46 insertions, 2 deletions
diff --git a/py-fake-service/app/adapter/mail_service.py b/py-fake-service/app/adapter/mail_service.py
index 7073e549..c6bd3ab4 100644
--- a/py-fake-service/app/adapter/mail_service.py
+++ b/py-fake-service/app/adapter/mail_service.py
@@ -40,5 +40,27 @@ class MailService:
self.mailset.mark_as_read(mail_id)
self.tagsset.mark_as_read(self.mail(mail_id).tags)
+ def delete_mail(self, mail_id):
+ purged = self.mailset.delete(mail_id)
+ if not purged:
+ self.tagsset.increment_tag_total_count('trash')
+
+
+ def update_tags_for(self, mail_id, new_tags):
+ mail = self.mail(mail_id)
+
+ new_tags_set = set(new_tags)
+ old_tags_set = set(mail.tags)
+
+ increment_set = new_tags_set - old_tags_set
+ decrement_set = old_tags_set - new_tags_set
+
+ map(lambda x : self.tagsset.increment_tag_total_count(x), increment_set)
+ map(lambda x : self.tagsset.decrement_tag_total_count(x), decrement_set)
+
+ mail.tags = new_tags
+
+
+
diff --git a/py-fake-service/app/adapter/mailset.py b/py-fake-service/app/adapter/mailset.py
index 2568e33b..5a6f27a4 100644
--- a/py-fake-service/app/adapter/mailset.py
+++ b/py-fake-service/app/adapter/mailset.py
@@ -15,8 +15,20 @@ class MailSet:
return self.mails.values()
def get(self, mail_id):
- return self.mails.get(int(mail_id))
+ return self.mails.get(mail_id)
def mark_as_read(self, mail_id):
- mail = self.mails.get(int(mail_id))
+ mail = self.get(mail_id)
mail.status.append('read')
+
+ def delete(self, mail_id):
+ """ Returns True if the email got purged, else returns False meaning the email got moved to trash """
+
+ mail = self.get(mail_id)
+ if 'trash' in mail.tags:
+ del self.mails[mail_id]
+ return True
+ mail.tags.append('trash')
+ return False
+
+
diff --git a/py-fake-service/app/adapter/tag.py b/py-fake-service/app/adapter/tag.py
index 73103490..a0f3ec1b 100644
--- a/py-fake-service/app/adapter/tag.py
+++ b/py-fake-service/app/adapter/tag.py
@@ -18,3 +18,6 @@ class Tag:
def increment_read(self):
self.counts['read'] += 1
+
+ def decrement_count(self):
+ self.counts['total'] -= 1
diff --git a/py-fake-service/app/adapter/tagsset.py b/py-fake-service/app/adapter/tagsset.py
index 04c712d4..abe7ef7e 100644
--- a/py-fake-service/app/adapter/tagsset.py
+++ b/py-fake-service/app/adapter/tagsset.py
@@ -19,3 +19,10 @@ class TagsSet:
for tag in tags:
tag = self.tags.get(tag)
tag.increment_read()
+
+ def increment_tag_total_count(self, tag):
+ self.tags.get(tag).increment_count()
+
+ def decrement_tag_total_count(self, tag):
+ self.tags.get(tag).decrement_count()
+