From 422c434224c965385a21d0d2948b005b6d44cccb Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 17 Jul 2015 22:12:08 +0200 Subject: fix integration test_search --- service/pixelated/adapter/search/__init__.py | 1 - service/test/integration/test_search.py | 114 ++++++++++----------- .../test/support/integration/app_test_client.py | 6 +- 3 files changed, 60 insertions(+), 61 deletions(-) (limited to 'service') diff --git a/service/pixelated/adapter/search/__init__.py b/service/pixelated/adapter/search/__init__.py index d2bd58c3..b8d3e7ca 100644 --- a/service/pixelated/adapter/search/__init__.py +++ b/service/pixelated/adapter/search/__init__.py @@ -152,7 +152,6 @@ class SearchEngine(object): try: with AsyncWriter(self._index) as writer: for mail in mails: - print 'Mail fdoc: %s' % mail.fdoc self._index_mail(writer, mail) if callback: callback() diff --git a/service/test/integration/test_search.py b/service/test/integration/test_search.py index f90ed80f..38abb7f8 100644 --- a/service/test/integration/test_search.py +++ b/service/test/integration/test_search.py @@ -15,107 +15,103 @@ # along with Pixelated. If not, see . from test.support.integration import SoledadTestBase, MailBuilder +from twisted.internet import defer class SearchTest(SoledadTestBase): + @defer.inlineCallbacks def test_that_tags_returns_all_tags(self): input_mail = MailBuilder().with_tags(['important']).build_input_mail() - self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail) - d = self.get_tags() + all_tags = yield self.get_tags() - def _assert(all_tags): - all_tag_names = [t['name'] for t in all_tags] - self.assertTrue('inbox' in all_tag_names) - self.assertTrue('sent' in all_tag_names) - self.assertTrue('trash' in all_tag_names) - self.assertTrue('drafts' in all_tag_names) - self.assertTrue('important' in all_tag_names) - d.addCallback(_assert) - return d + all_tag_names = [t['name'] for t in all_tags] + self.assertTrue('inbox' in all_tag_names) + self.assertTrue('sent' in all_tag_names) + self.assertTrue('trash' in all_tag_names) + self.assertTrue('drafts' in all_tag_names) + self.assertTrue('important' in all_tag_names) + @defer.inlineCallbacks def test_that_tags_are_filtered_by_query(self): input_mail = MailBuilder().with_tags(['ateu', 'catoa', 'luat', 'zuado']).build_input_mail() - self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail) - d = self.get_tags(q=["at"], skipDefaultTags=["true"]) + all_tags = yield self.get_tags(q=["at"], skipDefaultTags=["true"]) - def _assert(all_tags): - all_tag_names = [t['name'] for t in all_tags] - self.assertEqual(3, len(all_tag_names)) - self.assertTrue('ateu' in all_tag_names) - self.assertTrue('catoa' in all_tag_names) - self.assertTrue('luat' in all_tag_names) - - d.addCallback(_assert) - return d + all_tag_names = [t['name'] for t in all_tags] + self.assertEqual(3, len(all_tag_names)) + self.assertTrue('ateu' in all_tag_names) + self.assertTrue('catoa' in all_tag_names) + self.assertTrue('luat' in all_tag_names) + @defer.inlineCallbacks def test_tags_with_multiple_words_are_searchable(self): input_mail = MailBuilder().with_tags(['one tag four words']).build_input_mail() - self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail) - first_page = self.get_mails_by_tag('"one tag four words"', page=1, window=1) + first_page = yield self.get_mails_by_tag('"one tag four words"', page=1, window=1) self.assertEqual(len(first_page), 1) + @defer.inlineCallbacks def test_that_default_tags_are_ignorable(self): input_mail = MailBuilder().with_tags(['sometag']).build_input_mail() - self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail) - d = self.get_tags(skipDefaultTags=["true"]) + all_tags = yield self.get_tags(skipDefaultTags=["true"]) - def _assert(all_tags): - all_tag_names = [t['name'] for t in all_tags] - self.assertEqual(1, len(all_tag_names)) - self.assertTrue('sometag' in all_tag_names) - d.addCallback(_assert) - return d + all_tag_names = [t['name'] for t in all_tags] + self.assertEqual(1, len(all_tag_names)) + self.assertTrue('sometag' in all_tag_names) + @defer.inlineCallbacks 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']) + yield self.add_multiple_to_mailbox(num=10, mailbox='inbox', flags=['\\Recent']) + yield self.add_multiple_to_mailbox(num=5, mailbox='inbox', flags=['\\Seen']) + yield self.add_multiple_to_mailbox(num=3, mailbox='inbox', flags=['\\Recent'], tags=['important', 'later']) + yield self.add_multiple_to_mailbox(num=1, mailbox='inbox', flags=['\\Seen'], tags=['important']) - d = self.get_tags() + tags_count = yield self.get_tags() - def _assert(tags_count): - 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) - d.addCallback(_assert) - return d + 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) + @defer.inlineCallbacks def test_search_mails_different_window(self): input_mail = MailBuilder().build_input_mail() input_mail2 = MailBuilder().build_input_mail() - self.add_mail_to_inbox(input_mail) - self.add_mail_to_inbox(input_mail2) + yield self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail2) - first_page = self.get_mails_by_tag('inbox', page=1, window=1) + first_page = yield self.get_mails_by_tag('inbox', page=1, window=1) self.assertEqual(len(first_page), 1) + @defer.inlineCallbacks def test_search_mails_with_multiple_pages(self): input_mail = MailBuilder().build_input_mail() input_mail2 = MailBuilder().build_input_mail() - self.add_mail_to_inbox(input_mail) - self.add_mail_to_inbox(input_mail2) + yield self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail2) - first_page = self.get_mails_by_tag('inbox', page=1, window=1) - second_page = self.get_mails_by_tag('inbox', page=2, window=1) + first_page = yield self.get_mails_by_tag('inbox', page=1, window=1) + second_page = yield self.get_mails_by_tag('inbox', page=2, window=1) idents = [input_mail.ident, input_mail2.ident] self.assertIn(first_page[0].ident, idents) self.assertIn(second_page[0].ident, idents) + @defer.inlineCallbacks def test_page_zero_fetches_first_page(self): input_mail = MailBuilder().build_input_mail() - self.add_mail_to_inbox(input_mail) - page = self.get_mails_by_tag('inbox', page=0, window=1) + yield self.add_mail_to_inbox(input_mail) + page = yield 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): @@ -123,22 +119,24 @@ class SearchTest(SoledadTestBase): if tag['name'] == mailbox: return tag['counts'] + @defer.inlineCallbacks def test_order_by_date(self): input_mail = MailBuilder().with_date('2014-10-15T15:15').build_input_mail() input_mail2 = MailBuilder().with_date('2014-10-15T15:16').build_input_mail() - self.add_mail_to_inbox(input_mail) - self.add_mail_to_inbox(input_mail2) + yield self.add_mail_to_inbox(input_mail) + yield self.add_mail_to_inbox(input_mail2) - results = self.get_mails_by_tag('inbox') + results = yield self.get_mails_by_tag('inbox') self.assertEqual(results[0].ident, input_mail2.ident) self.assertEqual(results[1].ident, input_mail.ident) + @defer.inlineCallbacks def test_search_base64_body(self): body = u'bl\xe1' input_mail = MailBuilder().with_body(body.encode('utf-8')).build_input_mail() - self.add_mail_to_inbox(input_mail) - results = self.search(body) + yield self.add_mail_to_inbox(input_mail) + results = yield self.search(body) self.assertGreater(len(results), 0, 'No results returned from search') self.assertEquals(results[0].ident, input_mail.ident) diff --git a/service/test/support/integration/app_test_client.py b/service/test/support/integration/app_test_client.py index e5c845cc..e139d879 100644 --- a/service/test/support/integration/app_test_client.py +++ b/service/test/support/integration/app_test_client.py @@ -170,13 +170,15 @@ class AppTestClient(object): tags = 'tag:%s' % tag return self.search(tags, page, window) + @defer.inlineCallbacks def search(self, query, page=1, window=100): - res, req = self.get("/mails", { + res, _ = self.get("/mails", { 'q': [query], 'w': [str(window)], 'p': [str(page)] }) - return [ResponseMail(m) for m in res['mails']] + res = yield res + defer.returnValue([ResponseMail(m) for m in res['mails']]) def get_attachment(self, ident, encoding): res, req = self.get("/attachment/%s" % ident, {'encoding': [encoding]}, as_json=False) -- cgit v1.2.3