diff options
author | Duda Dornelles <ddornell@thoughtworks.com> | 2014-10-17 14:36:13 +0200 |
---|---|---|
committer | Duda Dornelles <ddornell@thoughtworks.com> | 2014-10-17 14:36:13 +0200 |
commit | 362040299d52a33a2cf61f0a6e1111ec70a5263b (patch) | |
tree | b9a0d9d26325be1889f4f56f60187509e2059236 /service/test | |
parent | a383985643419f85bc7b07a2dcf97cdd15c89783 (diff) |
better tests for getting all tags and filtering all tags. some fixes go together
Diffstat (limited to 'service/test')
-rw-r--r-- | service/test/integration/search_test.py | 35 | ||||
-rw-r--r-- | service/test/support/integration_helper.py | 16 |
2 files changed, 41 insertions, 10 deletions
diff --git a/service/test/integration/search_test.py b/service/test/integration/search_test.py index 81d1fad2..04151b55 100644 --- a/service/test/integration/search_test.py +++ b/service/test/integration/search_test.py @@ -27,7 +27,7 @@ class SearchTest(unittest.TestCase, SoledadTestBase): self.teardown_soledad() def test_that_tags_returns_all_tags(self): - input_mail = MailBuilder().with_tags('important').build_input_mail() + input_mail = MailBuilder().with_tags(['important']).build_input_mail() self.add_mail_to_inbox(input_mail) all_tags = self.get_tags() @@ -40,17 +40,19 @@ class SearchTest(unittest.TestCase, SoledadTestBase): self.assertTrue('important' in all_tag_names) def test_that_tags_are_filtered_by_query(self): - input_mail = MailBuilder().with_tags('mytag').build_input_mail() + input_mail = MailBuilder().with_tags(['ateu', 'atoa', 'atado', 'zuado']).build_input_mail() self.add_mail_to_inbox(input_mail) - all_tags = self.get_tags('?q=my&skipDefaultTags=true') + all_tags = self.get_tags('?q=at&skipDefaultTags=true') all_tag_names = [t['name'] for t in all_tags] - self.assertEqual(1, len(all_tag_names)) - self.assertTrue('mytag' in all_tag_names) + self.assertEqual(3, len(all_tag_names)) + self.assertTrue('ateu' in all_tag_names) + self.assertTrue('atoa' in all_tag_names) + self.assertTrue('atado' in all_tag_names) def test_that_default_tags_are_ignorable(self): - input_mail = MailBuilder().with_tags('sometag').build_input_mail() + input_mail = MailBuilder().with_tags(['sometag']).build_input_mail() self.add_mail_to_inbox(input_mail) all_tags = self.get_tags('?skipDefaultTags=true') @@ -59,6 +61,19 @@ class SearchTest(unittest.TestCase, SoledadTestBase): self.assertEqual(1, len(all_tag_names)) self.assertTrue('sometag' in all_tag_names) + def test_tags_count(self): + self.add_multiple_to_mailbox(num=10, mailbox='inbox', flags=['\\Recent']) + self.add_multiple_to_mailbox(num=5, mailbox='inbox', flags=['\\Seen']) + self.add_multiple_to_mailbox(num=3, mailbox='inbox', flags=['\\Recent'], tags=['important', 'later']) + self.add_multiple_to_mailbox(num=1, mailbox='inbox', flags=['\\Seen'], tags=['important']) + + tags_count = self.get_tags() + + self.assertEqual(self.get_count(tags_count, 'inbox')['total'], 19) + self.assertEqual(self.get_count(tags_count, 'inbox')['read'], 6) + self.assertEqual(self.get_count(tags_count, 'important')['total'], 4) + self.assertEqual(self.get_count(tags_count, 'important')['read'], 1) + def test_search_mails_different_window(self): input_mail = MailBuilder().build_input_mail() input_mail2 = MailBuilder().build_input_mail() @@ -68,7 +83,7 @@ class SearchTest(unittest.TestCase, SoledadTestBase): first_page = self.get_mails_by_tag('inbox', page=1, window=1) self.assertEqual(len(first_page), 1) - + def test_search_mails_with_multiple_pages(self): input_mail = MailBuilder().build_input_mail() input_mail2 = MailBuilder().build_input_mail() @@ -88,3 +103,9 @@ class SearchTest(unittest.TestCase, SoledadTestBase): self.add_mail_to_inbox(input_mail) page = self.get_mails_by_tag('inbox', page=0, window=1) self.assertEqual(page[0].ident, input_mail.ident) + + def get_count(self, tags_count, mailbox): + for tag in tags_count: + if tag['name'] == mailbox: + return tag['counts'] + diff --git a/service/test/support/integration_helper.py b/service/test/support/integration_helper.py index f0f3b02a..e6d9b96f 100644 --- a/service/test/support/integration_helper.py +++ b/service/test/support/integration_helper.py @@ -21,6 +21,7 @@ import os from mock import Mock from pixelated.adapter.mail_service import MailService from pixelated.adapter.search import SearchEngine +from pixelated.adapter.status import Status from pixelated.adapter.tag_service import TagService from pixelated.adapter.draft_service import DraftService from pixelated.adapter.mail import PixelatedMail, InputMail @@ -105,7 +106,7 @@ class MailBuilder: self.mail['body'] = body return self - def with_tags(self, *tags): + def with_tags(self, tags): self.mail['tags'] = tags return self @@ -113,8 +114,10 @@ class MailBuilder: self.mail['header']['subject'] = subject return self - def with_status(self, status): - self.mail['status'].append('read') + def with_status(self, flags): + for status in Status.from_flags(flags): + self.mail['status'].append(status) + return self def with_ident(self, ident): @@ -210,6 +213,13 @@ class SoledadTestBase: mail.update_tags(input_mail.tags) self.search_engine.index_mail(mail) + def add_multiple_to_mailbox(self, num, mailbox='', flags=[], tags=[]): + for _ in range(num): + input_mail = MailBuilder().with_status(flags).with_tags(tags).build_input_mail() + mail = self.mailboxes._create_or_get(mailbox).add(input_mail) + mail.update_tags(input_mail.tags) + self.search_engine.index_mail(mail) + class ResponseMail: def __init__(self, mail_dict): |