summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorPatrick Maia and Victor Shyba <pixelated-team+pmaia+vshyba@thoughtworks.com>2014-09-07 23:18:04 +0000
committerPatrick Maia <pmaia@thoughtworks.com>2014-09-07 23:18:04 +0000
commit07515ff8b05ea3795fd296e6e29ff1b8d548b47c (patch)
treeb5284c5c8ed2314aabf045cc9d906eed6fcdfac6 /service
parenteca2d8db9fa967b4cad39611fe229e2f9421c9fe (diff)
#51 - removes tag from the index when it is not being used anymore
Diffstat (limited to 'service')
-rw-r--r--service/pixelated/adapter/pixelated_mailbox.py5
-rw-r--r--service/test/adapter/pixelated_mailbox_test.py4
2 files changed, 8 insertions, 1 deletions
diff --git a/service/pixelated/adapter/pixelated_mailbox.py b/service/pixelated/adapter/pixelated_mailbox.py
index a5b07660..2723dfc1 100644
--- a/service/pixelated/adapter/pixelated_mailbox.py
+++ b/service/pixelated/adapter/pixelated_mailbox.py
@@ -61,7 +61,10 @@ class PixelatedMailbox:
for removed_tag in removed_tags:
tag = self.tag_index.get(removed_tag)
tag.decrement(mail_ident)
- self.tag_index.set(tag)
+ if tag.total == 0:
+ self.tag_index.remove(tag.name)
+ else:
+ self.tag_index.set(tag)
for added_tag in added_tags:
tag = self.tag_index.get(added_tag) or Tag(added_tag)
tag.increment(mail_ident)
diff --git a/service/test/adapter/pixelated_mailbox_test.py b/service/test/adapter/pixelated_mailbox_test.py
index e763d8fe..7e8e9d3c 100644
--- a/service/test/adapter/pixelated_mailbox_test.py
+++ b/service/test/adapter/pixelated_mailbox_test.py
@@ -51,8 +51,12 @@ class TestPixelatedMailbox(unittest.TestCase):
tag_index.close_db()
mailbox = PixelatedMailbox(test_helper.leap_mailbox(), self.db_file_path)
self.assertEquals(0, mailbox.tag_index.get('inbox').total)
+ self.assertEquals(1, mailbox.tag_index.get('one_tag').total)
+
mailbox.notify_tags_updated(set(['inbox']), set(['one_tag']), 12)
+
self.assertEquals(1, mailbox.tag_index.get('inbox').total)
+ self.assertIsNone(mailbox.tag_index.get('one_tag'))
def test_index_is_initialized_with_mail_tags_if_empty(self):
mail_one = test_helper.leap_mail(uid=0, extra_headers={'X-Tags': ['tag_1']})