diff options
Diffstat (limited to 'service/test')
-rw-r--r-- | service/test/adapter/mail_service_test.py | 77 | ||||
-rw-r--r-- | service/test/adapter/pixelated_mailboxes_test.py | 42 |
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]) |