From 85264c9ab3052dd844016d3ec44cb8af43dd5869 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Wed, 8 Oct 2014 18:06:28 +0200 Subject: Added whoosh as search engine (issue #94). --- service/test/adapter/draft_service_test.py | 29 ++++++++++++++++++++++ service/test/integration/delete_mail_test.py | 6 ++--- service/test/integration/mark_as_read_test.py | 2 +- service/test/integration/tags_test.py | 4 +-- service/test/support/integration_helper.py | 14 ++++++++++- service/test/unit/adapter/mail_service_test.py | 7 ------ .../test/unit/adapter/pixelated_mailboxes_test.py | 17 ------------- service/test/unit/user_agent_test.py | 13 +++++++--- 8 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 service/test/adapter/draft_service_test.py (limited to 'service/test') diff --git a/service/test/adapter/draft_service_test.py b/service/test/adapter/draft_service_test.py new file mode 100644 index 00000000..92b25d36 --- /dev/null +++ b/service/test/adapter/draft_service_test.py @@ -0,0 +1,29 @@ +import unittest +from pixelated.adapter.pixelated_mail import InputMail +from pixelated.adapter.draft_service import DraftService +import test_helper +from mockito import * + + +class DraftServiceTest(unittest.TestCase): + + def setUp(self): + self.mailboxes = mock() + self.drafts_mailbox = mock() + self.draft_service = DraftService(self.mailboxes) + when(self.mailboxes).drafts().thenReturn(self.drafts_mailbox) + + def test_add_draft(self): + mail = InputMail() + self.draft_service.create_draft(mail) + + verify(self.drafts_mailbox).add(mail) + + def test_update_draft(self): + mail = test_helper.input_mail() + when(self.drafts_mailbox).add(mail).thenReturn(mail) + + self.draft_service.update_draft(mail.ident, mail) + + inorder.verify(self.drafts_mailbox).add(mail) + inorder.verify(self.drafts_mailbox).remove(mail.ident) diff --git a/service/test/integration/delete_mail_test.py b/service/test/integration/delete_mail_test.py index 3d4a6af7..665c7793 100644 --- a/service/test/integration/delete_mail_test.py +++ b/service/test/integration/delete_mail_test.py @@ -26,13 +26,13 @@ class DeleteMailTest(unittest.TestCase, SoledadTestBase): self.teardown_soledad() def test_move_mail_to_trash_when_deleting(self): - mail = MailBuilder().with_subject('Mail with tags').build_input_mail() - self.pixelated_mailboxes.inbox().add(mail) + input_mail = MailBuilder().with_subject('Mail with tags').build_input_mail() + self.add_mail_to_inbox(input_mail) inbox_mails = self.get_mails_by_tag('inbox') self.assertEquals(1, len(inbox_mails)) - self.delete_mail(mail.ident) + self.delete_mail(input_mail.ident) inbox_mails = self.get_mails_by_tag('inbox') self.assertEquals(0, len(inbox_mails)) diff --git a/service/test/integration/mark_as_read_test.py b/service/test/integration/mark_as_read_test.py index 2c95ebc1..5dd90d77 100644 --- a/service/test/integration/mark_as_read_test.py +++ b/service/test/integration/mark_as_read_test.py @@ -27,7 +27,7 @@ class MarkAsReadTest(unittest.TestCase, SoledadTestBase): def test_mark_as_read(self): input_mail = MailBuilder().build_input_mail() - self.pixelated_mailboxes.inbox().add(input_mail) + self.add_mail_to_inbox(input_mail) mails = self.get_mails_by_tag('inbox') self.assertFalse('read' in mails[0].status) diff --git a/service/test/integration/tags_test.py b/service/test/integration/tags_test.py index e2ef1c0e..dea9fbd2 100644 --- a/service/test/integration/tags_test.py +++ b/service/test/integration/tags_test.py @@ -31,7 +31,7 @@ class TagsTest(unittest.TestCase, SoledadTestBase): def test_add_tag_to_an_inbox_mail_and_query(self): mail = MailBuilder().with_subject('Mail with tags').build_input_mail() - self.pixelated_mailboxes.inbox().add(mail) + self.add_mail_to_inbox(mail) self.post_tags(mail.ident, self._tags_json(['IMPORTANT'])) @@ -43,7 +43,7 @@ class TagsTest(unittest.TestCase, SoledadTestBase): def test_addition_of_reserved_tags_is_not_allowed(self): mail = MailBuilder().with_subject('Mail with tags').build_input_mail() - self.pixelated_mailboxes.inbox().add(mail) + self.add_mail_to_inbox(mail) response = self.post_tags(mail.ident, self._tags_json(['DRAFTS'])) self.assertEquals("None of the following words can be used as tags: drafts", response) diff --git a/service/test/support/integration_helper.py b/service/test/support/integration_helper.py index 616485ee..e776e3c3 100644 --- a/service/test/support/integration_helper.py +++ b/service/test/support/integration_helper.py @@ -21,8 +21,10 @@ import os from mock import Mock import shutil from pixelated.adapter.mail_service import MailService +from pixelated.adapter.search import SearchEngine from pixelated.adapter.tag_index import TagIndex from pixelated.adapter.tag_service import TagService +from pixelated.adapter.draft_service import DraftService import pixelated.user_agent from pixelated.adapter.pixelated_mail import PixelatedMail, InputMail from pixelated.adapter.pixelated_mailboxes import PixelatedMailBoxes @@ -121,13 +123,19 @@ class SoledadTestBase: PixelatedMail.from_email_address = self.mail_address self.app = pixelated.user_agent.app.test_client() self.account = FakeAccount() + self.pixelated_mailboxes = PixelatedMailBoxes(self.account) self.mail_sender = mock() self.tag_index = TagIndex(os.path.join(soledad_test_folder, 'tag_index')) self.tag_service = TagService(self.tag_index) - self.pixelated_mailboxes = PixelatedMailBoxes(self.account) + self.draft_service = DraftService(self.pixelated_mailboxes) self.mail_service = MailService(self.pixelated_mailboxes, self.mail_sender, self.tag_service) + self.search_engine = SearchEngine() + self.search_engine.index_mails(self.mail_service.all_mails()) pixelated.user_agent.mail_service = self.mail_service + pixelated.user_agent.draft_service = self.draft_service + pixelated.user_agent.tag_service = self.tag_service + pixelated.user_agent.search_engine = self.search_engine def get_mails_by_tag(self, tag): response = json.loads(self.app.get("/mails?q=tag:" + tag).data) @@ -151,6 +159,10 @@ class SoledadTestBase: def mark_as_read(self, mail_ident): self.app.post('/mail/' + mail_ident + '/read', content_type="application/json") + def add_mail_to_inbox(self, input_mail): + mail = self.pixelated_mailboxes.inbox().add(input_mail) + self.search_engine.index_mail(mail) + class ResponseMail: def __init__(self, mail_dict): diff --git a/service/test/unit/adapter/mail_service_test.py b/service/test/unit/adapter/mail_service_test.py index 549ab05c..21f34b12 100644 --- a/service/test/unit/adapter/mail_service_test.py +++ b/service/test/unit/adapter/mail_service_test.py @@ -47,13 +47,6 @@ class TestMailService(unittest.TestCase): verify(mail).mark_as_read() - def test_create_draft(self): - mail = '' - - self.mail_service.create_draft(mail) - - verify(self.mailboxes).add_draft(mail) - def test_delete_mail(self): self.mail_service.delete_mail(1) diff --git a/service/test/unit/adapter/pixelated_mailboxes_test.py b/service/test/unit/adapter/pixelated_mailboxes_test.py index 8314f7f8..fce06a22 100644 --- a/service/test/unit/adapter/pixelated_mailboxes_test.py +++ b/service/test/unit/adapter/pixelated_mailboxes_test.py @@ -48,20 +48,3 @@ class PixelatedMailboxesTest(unittest.TestCase): self.assertEqual(1, len(mails)) self.assertEqual("mail", mails[0]) - - def test_add_draft(self): - mail = InputMail() - when(self.drafts_mailbox).add(mail).thenReturn(1) - - self.mailboxes.add_draft(mail) - - verify(self.drafts_mailbox).add(mail) - - def test_update_draft(self): - mail = test_helper.input_mail() - when(self.drafts_mailbox).add(mail).thenReturn(mail) - - self.mailboxes.update_draft(mail.ident, mail) - - inorder.verify(self.drafts_mailbox).add(mail) - inorder.verify(self.drafts_mailbox).remove(mail.ident) diff --git a/service/test/unit/user_agent_test.py b/service/test/unit/user_agent_test.py index 22199333..83a35246 100644 --- a/service/test/unit/user_agent_test.py +++ b/service/test/unit/user_agent_test.py @@ -35,10 +35,14 @@ class UserAgentTest(unittest.TestCase): self.app = pixelated.user_agent.app.test_client() self.mail_service = mock() self.tag_service = mock() - self.mail_service.tag_service = self.tag_service + self.draft_service = mock() + self.search_engine = mock() pixelated.user_agent.DISABLED_FEATURES = [] pixelated.user_agent.mail_service = self.mail_service + pixelated.user_agent.tag_service = self.tag_service + pixelated.user_agent.draft_service = self.draft_service + pixelated.user_agent.search_engine = self.search_engine self.input_mail = None pixelated.adapter.pixelated_mail.input_mail_from_dict = lambda x: self.input_mail @@ -50,7 +54,7 @@ class UserAgentTest(unittest.TestCase): self.app.post('/mails', data='{}', content_type="application/json") - verify(self.mail_service).create_draft(self.input_mail) + verify(self.draft_service).create_draft(self.input_mail) def test_create_or_send_draft_should_send_draft_if_mail_has_ident(self): self.input_mail = self.draft() @@ -61,6 +65,7 @@ class UserAgentTest(unittest.TestCase): def test_sending_mail_return_sent_mail_data_when_send_succeeds(self): self.input_mail = self.draft() + when(self.mail_service).send(1, self.input_mail).thenReturn(self.input_mail) self.input_mail.as_dict = lambda: {'header': {'from': 'a@a.a', 'to': 'b@b.b'}, 'ident': 1, 'tags': [], @@ -89,11 +94,11 @@ class UserAgentTest(unittest.TestCase): def test_update_draft(self): self.input_mail = self.draft() - when(self.mail_service).update_draft(1, self.input_mail).thenReturn(self.input_mail) + when(self.draft_service).update_draft(1, self.input_mail).thenReturn(self.input_mail) self.app.put('/mails', data='{"ident":1}', content_type="application/json") - verify(self.mail_service).update_draft(1, self.input_mail) + verify(self.draft_service).update_draft(1, self.input_mail) def draft(self): return test_helper.input_mail() -- cgit v1.2.3