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/unit/test_welcome_mail.py | 73 ++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 service/test/unit/test_welcome_mail.py (limited to 'service/test/unit/test_welcome_mail.py') 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