From 33ac29beffa23c844900ae0b8f189e955bbde9d2 Mon Sep 17 00:00:00 2001 From: Jefferson Stachelski Date: Tue, 20 Oct 2015 21:08:29 -0200 Subject: Refactored the welcome mail logic and add a test --- service/test/integration/test_welcome_mail.py | 43 ---------------- service/test/unit/test_welcome_mail.py | 73 +++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 43 deletions(-) delete mode 100644 service/test/integration/test_welcome_mail.py create mode 100644 service/test/unit/test_welcome_mail.py (limited to 'service/test') diff --git a/service/test/integration/test_welcome_mail.py b/service/test/integration/test_welcome_mail.py deleted file mode 100644 index dfd106dc..00000000 --- a/service/test/integration/test_welcome_mail.py +++ /dev/null @@ -1,43 +0,0 @@ -# -# 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 . - -from test.support.integration import SoledadTestBase -from twisted.internet import defer -from pixelated.adapter.model.mail import welcome_mail - - -class TestWelcomeMail(SoledadTestBase): - - @defer.inlineCallbacks - def _test_welcome_mail_is_added_only_once(self): - yield self._add_welcome_mail() - # yield self._add_welcome_mail() # TODO: verificar o pq de add 2 mails quando chamado 3 vezes - # yield self._add_welcome_mail() - inbox_mails = yield self.get_mails_by_mailbox_name('INBOX') - self.assertEquals(1, len(inbox_mails)) - - def _add_welcome_mail(self): - mail = welcome_mail() - self.add_mail_to_inbox(mail) - - @defer.inlineCallbacks - def _test_empty_mailbox_doesnt_mean_fresh_mailbox(self): - yield self.mailboxes.add_welcome_mail_for_fresh_user() - inbox_mails = yield self.get_mails_by_tag('inbox') - yield self.delete_mail(inbox_mails[0].ident) - yield self.mailboxes.add_welcome_mail_for_fresh_user() - inbox_mails = yield self.get_mails_by_tag('inbox') - self.assertEquals(0, len(inbox_mails)) diff --git a/service/test/unit/test_welcome_mail.py b/service/test/unit/test_welcome_mail.py new file mode 100644 index 00000000..7e9ab0c9 --- /dev/null +++ b/service/test/unit/test_welcome_mail.py @@ -0,0 +1,73 @@ +# +# 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 . + +import os +import unittest +from mockito import verify, mock +from mockito.matchers import Matcher +from email import message_from_file +from pixelated.config.leap import add_welcome_mail +from pixelated.adapter.model.mail import InputMail + + +class TestWelcomeMail(unittest.TestCase): + + def test_add_welcome_mail(self): + mail_store = mock() + input_mail = self._get_welcome_mail() + + add_welcome_mail(mail_store) + capture = WelcomeMailCapture() + + verify(mail_store).add_mail('INBOX', capture) + capture.assert_mail(input_mail.raw) + + def _get_welcome_mail(self): + current_path = os.path.dirname(os.path.abspath(__file__)) + with open(os.path.join(current_path, + '..', + '..', + 'pixelated', + 'assets', + 'welcome.mail')) as mail_template_file: + mail_template = message_from_file(mail_template_file) + + return InputMail.from_python_mail(mail_template) + + +class WelcomeMailCapture(Matcher): + + def matches(self, arg): + self.value = arg + return True + + def assert_mail(self, mail): + captured_mail = self._format(self.value) + expected_mail = self._format(mail) + assert captured_mail == expected_mail + + def _format(self, mail): + splitter = '\n' + arr = mail.split(splitter) + arr = self._remove_variable_value(arr) + + return splitter.join(arr) + + def _remove_variable_value(self, arr): + arr.pop(0) + arr.pop(6) + arr.pop(44) + return arr -- cgit v1.2.3