summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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']})