diff options
| author | Jefferson Stachelski <jeffhsta@riseup.net> | 2015-10-20 21:08:29 -0200 | 
|---|---|---|
| committer | Jefferson Stachelski <jeffhsta@riseup.net> | 2015-10-20 21:11:21 -0200 | 
| commit | 33ac29beffa23c844900ae0b8f189e955bbde9d2 (patch) | |
| tree | 1b7d9a0551593405d79a951b05212917e037bcff /service/test | |
| parent | bae4d080349faa50e54de2c7c13b4503afac798d (diff) | |
Refactored the welcome mail logic and add a test
Diffstat (limited to 'service/test')
| -rw-r--r-- | service/test/integration/test_welcome_mail.py | 43 | ||||
| -rw-r--r-- | service/test/unit/test_welcome_mail.py | 73 | 
2 files changed, 73 insertions, 43 deletions
| 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 <http://www.gnu.org/licenses/>. - -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 <http://www.gnu.org/licenses/>. + +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 | 
