summaryrefslogtreecommitdiff
path: root/service/test
diff options
context:
space:
mode:
Diffstat (limited to 'service/test')
-rw-r--r--service/test/adapter/mail_service_test.py77
-rw-r--r--service/test/adapter/pixelated_mailboxes_test.py42
2 files changed, 54 insertions, 65 deletions
diff --git a/service/test/adapter/mail_service_test.py b/service/test/adapter/mail_service_test.py
index 04fbeb82..f66a3fae 100644
--- a/service/test/adapter/mail_service_test.py
+++ b/service/test/adapter/mail_service_test.py
@@ -16,80 +16,27 @@
import unittest
from pixelated.adapter.mail_service import MailService
-from mock import Mock, MagicMock, patch, PropertyMock
-import test_helper
-from pixelated.adapter.tag import Tag
-from pixelated.adapter.pixelated_mailbox import PixelatedMailbox
+from mockito import *
class TestMailService(unittest.TestCase):
-
- @patch.object(MailService, '_append_mail_flags', return_value=None)
- @patch.object(MailService, '_remove_mail_flags', return_value=None)
- def test_custom_tags_get_created_if_not_exists(self, mockRemoveFlags, mockAppendFlags):
- mailbox = test_helper.leap_mailbox(leap_flags=['\\Recent'])
- account = MagicMock()
- leap_session = MagicMock()
- leap_session.account = account
- leap_session.account.getMailbox.return_value = mailbox
-
- mailservice = MailService(leap_session)
-
- new_tags = ['test', 'inbox']
- updated_tags = mailservice.update_tags(6, new_tags)
-
- self.assertEquals(set([Tag('test'), Tag('inbox')]), set(updated_tags))
- # make sure that special tags are skipped when setting leap flags (eg.: tag_inbox)
- mockAppendFlags.assert_called_with(6, ['tag_test'])
- mockRemoveFlags.assert_called_with(6, [])
+ def setUp(self):
+ self.mailboxes = mock()
+ self.mail_sender = mock()
+ self.mail_service = MailService(self.mailboxes, self.mail_sender)
def test_search_without_query_returns_unfiltered_mailbox(self):
- # given
- mailbox = test_helper.leap_mailbox(leap_flags=['\\Recent'], extra_flags=['tag_custom_tag'])
- account = MagicMock()
- account.getMailbox.return_value = mailbox
- leap_session = MagicMock(account=account)
-
- # when
- mailservice = MailService(leap_session)
- mails = mailservice.mails({})
+ mailbox_inbox = mock()
+ when(mailbox_inbox).mails().thenReturn(["mail"])
+ when(self.mailboxes).inbox().thenReturn(mailbox_inbox)
- # then
- self.assertEqual(1, len(mails))
-
- def test_search_for_tags(self):
- # given
- mailbox = test_helper.leap_mailbox(leap_flags=['\\Recent'], extra_flags=['tag_custom_tag'])
- matching_mail = test_helper.leap_mail(uid=6, leap_flags=[], extra_flags=['tag_custom_tag'])
- not_matching_mail = test_helper.leap_mail(uid=6, leap_flags=[], extra_flags=['tag_other'])
- mailbox.messages = [matching_mail, not_matching_mail]
- mailbox.all_tags.return_value = set()
- account = MagicMock()
- account.mailboxes = ['inbox']
- account.getMailbox.return_value = mailbox
-
- leap_session = MagicMock(account=account)
+ mails = self.mail_service.mails({})
- # when
- mailservice = MailService(leap_session)
- mails = mailservice.mails({'tags': ['inbox', 'custom_tag']})
-
- # then
self.assertEqual(1, len(mails))
- self.assertEqual(set([Tag('custom_tag')]), mails[0].tags)
def test_send_mail(self):
- leap_session = Mock(account_email=lambda: "username@leap_server")
- mail_service = MailService(leap_session)
- mail_service._create_smtp_server = lambda: None
- mail_service._create_smtp_server = lambda: None
-
- mail_service.smtp_client = Mock()
- mail = Mock(
- to_smtp_format=lambda _from=None: "mail as string",
- get_to=lambda: 'to@pixelated.org'
- )
+ mail = "mail"
- mail_service.send(mail)
+ self.mail_service.send(mail)
- mail_service.smtp_client.sendmail.assert_called_with('username@leap_server', 'to@pixelated.org', "mail as string")
+ verify(self.mail_sender).sendmail(mail)
diff --git a/service/test/adapter/pixelated_mailboxes_test.py b/service/test/adapter/pixelated_mailboxes_test.py
new file mode 100644
index 00000000..b90e17a0
--- /dev/null
+++ b/service/test/adapter/pixelated_mailboxes_test.py
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2014 ThoughtWorks, Inc.
+#
+# Pixelated is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pixelated is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
+import unittest
+
+from pixelated.adapter.pixelated_mailbox import PixelatedMailbox
+from pixelated.adapter.pixelated_mailboxes import PixelatedMailBoxes
+from mockito import *
+
+
+class PixelatedMailboxesTest(unittest.TestCase):
+ def setUp(self):
+ self.account = mock()
+ self.mailboxes = PixelatedMailBoxes(self.account)
+
+ def test_search_for_tags(self):
+ # given
+ mailbox = mock()
+ self.account.mailboxes = ['INBOX']
+ tags_to_search_for = {'tags': ['inbox', 'custom_tag']}
+
+ when(PixelatedMailbox).create(self.account, 'INBOX').thenReturn(mailbox)
+ when(mailbox).mails_by_tags(any(list)).thenReturn(["mail"])
+
+ # when
+ mails = self.mailboxes.mails_by_tag(tags_to_search_for)
+
+ # then
+ self.assertEqual(1, len(mails))
+ self.assertEqual("mail", mails[0])