def test_decrements_total_count_and_removes_mails_id_from_mails(self):
        tag = Tag('one_more')
        tag.mails = set([12])
        tag.decrement(12)

        self.assertNotIn(12, tag.mails)
        self.assertEquals(0, tag.total)
    def test_decrements_total_count_and_removes_mails_id_from_mails(self):
        tag = Tag('one_more')
        tag.mails = set([12])
        tag.decrement(12)

        self.assertNotIn(12, tag.mails)
        self.assertEquals(0, tag.total)
class TagService:

    instance = None
    SPECIAL_TAGS = {Tag('inbox', True), Tag('sent', True), Tag('drafts', True), Tag('trash', True)}

    @classmethod
    def extract_reserved(cls, tags):
        return {tag.name for tag in cls.SPECIAL_TAGS if tag.name in tags}
    def test_as_dict_puts_all_tag_attributes_in_the_returning_dict(self):
        tag = Tag('some_tag', default=True)
        tag.counts = {'total': 0, 'read': 0, 'starred': 0, 'replied': 0}
        tag.mails = [1, 2, 3]

        tag_dict = tag.as_dict()

        self.assertEquals(tag.name, tag_dict['name'])
        self.assertEquals(tag.default, tag_dict['default'])
        self.assertEquals(tag.total, tag_dict['counts']['total'])
        self.assertEquals(tag.mails, tag_dict['mails'])
    def test_as_dict_puts_all_tag_attributes_in_the_returning_dict(self):
        tag = Tag('some_tag', default=True)
        tag.counts = {'total': 0, 'read': 0, 'starred': 0, 'replied': 0}
        tag.mails = [1, 2, 3]

        tag_dict = tag.as_dict()

        self.assertEquals(tag.name, tag_dict['name'])
        self.assertEquals(tag.default, tag_dict['default'])
        self.assertEquals(tag.total, tag_dict['counts']['total'])
        self.assertEquals(tag.mails, tag_dict['mails'])
    def test_notify_tags_updated_method_properly_changes_tags_state(self):
        mail_ident = 12
        tag = Tag('one_tag')
        tag.increment(mail_ident)
        self.tag_service.load_index([])
        self.tag_service.tag_index.set(tag)

        self.assertEquals(0, self.tag_service.tag_index.get('inbox').total)
        self.assertEquals(1, self.tag_service.tag_index.get('one_tag').total)

        self.tag_service.notify_tags_updated({'inbox'}, {'one_tag'}, mail_ident)

        self.assertEquals(1, self.tag_service.tag_index.get('inbox').total)
        self.assertIsNone(self.tag_service.tag_index.get('one_tag'))
    def test_from_dict_sets_all_tag_attributes(self):
        tag_dict = {'name': 'a_tag',
                    'default': False,
                    'counts': {'total': 3,
                               'read': 1,
                               'starred': 1,
                               'replied': 1},
                    'mails': [1, 2, 3]}

        tag = Tag.from_dict(tag_dict)

        self.assertEquals(tag_dict['name'], tag.name)
        self.assertEquals(tag_dict['default'], tag.default)
        self.assertEquals(tag_dict['counts']['total'], tag.total)
        # Checks if mail ids are aways restored as set()
        self.assertEquals(type(tag.mails), type(set()))
        self.assertEquals(set(tag_dict['mails']), tag.mails)
    def test_from_dict_sets_all_tag_attributes(self):
        tag_dict = {
            'name': 'a_tag',
            'default': False,
            'counts': {
                'total': 3,
                'read': 1,
                'starred': 1,
                'replied': 1
            },
            'mails': [1, 2, 3]
        }

        tag = Tag.from_dict(tag_dict)

        self.assertEquals(tag_dict['name'], tag.name)
        self.assertEquals(tag_dict['default'], tag.default)
        self.assertEquals(tag_dict['counts']['total'], tag.total)
        # Checks if mail ids are aways restored as set()
        self.assertEquals(type(tag.mails), type(set()))
        self.assertEquals(set(tag_dict['mails']), tag.mails)
 def all_tags(self):
     return Tag.from_flags(self._getFlags())
 def _extract_tags(self):
     return Tag.from_flags(self.leap_mail.getFlags())
    def test_increment_does_nothing_if_mail_already_has_the_tag(self):
        tag = Tag('tag')
        tag.mails = set([12])
        tag.increment(12)

        self.assertEquals(1, tag.total)
 def test_leap_deleted_flag_is_translated_to_trash_tag(self):
     tag = Tag.from_flag("\\Deleted")
     self.assertEquals(Tag("trash"), tag)
    def test_increment_does_nothing_if_mail_already_has_the_tag(self):
        tag = Tag('tag')
        tag.mails = set([12])
        tag.increment(12)

        self.assertEquals(1, tag.total)
 def test_bulk_conversion(self):
     tags = Tag.from_flags(["\\Answered", "\\Seen", "\\Recent", "tag_a_custom", "List"])
     self.assertEquals(set([Tag("inbox"), Tag("a_custom")]), tags)
 def test_custom_tags_containing_our_prefix_are_handled(self):
     tag = Tag.from_flag("tag_tag_work_tag_")
     self.assertEquals(Tag("tag_work_tag_"), tag)
 def test_leap_flags_that_are_custom_tags_are_handled(self):
     tag = Tag.from_flag("tag_work")
     self.assertEquals(Tag("work"), tag)
 def test_leap_draft_flag_is_translated_to_draft_tag(self):
     tag = Tag.from_flag("\\Draft")
     self.assertEquals(Tag("drafts"), tag)
    def test_increments_total_count_and_adds_mails_id_to_mails(self):
        tag = Tag('another')
        tag.increment(12)

        self.assertIn(12, tag.mails)
        self.assertEquals(1, tag.total)
    def test_decrement_does_nothing_if_mail_has_not_the_tag(self):
        tag = Tag('tag')
        tag.decrement(2000)

        self.assertEquals(0, tag.total)
    def test_decrement_does_nothing_if_mail_has_not_the_tag(self):
        tag = Tag('tag')
        tag.decrement(2000)

        self.assertEquals(0, tag.total)
    def test_increments_total_count_and_adds_mails_id_to_mails(self):
        tag = Tag('another')
        tag.increment(12)

        self.assertIn(12, tag.mails)
        self.assertEquals(1, tag.total)
 def test_leap_recent_flag_is_translated_to_inbox_tag(self):
     tag = Tag.from_flag("\\Recent")
     self.assertEquals(Tag("inbox"), tag)