summaryrefslogtreecommitdiff
path: root/service/test/unit/test_welcome_mail.py
diff options
context:
space:
mode:
authorJefferson Stachelski <jeffhsta@riseup.net>2015-10-20 21:08:29 -0200
committerJefferson Stachelski <jeffhsta@riseup.net>2015-10-20 21:11:21 -0200
commit33ac29beffa23c844900ae0b8f189e955bbde9d2 (patch)
tree1b7d9a0551593405d79a951b05212917e037bcff /service/test/unit/test_welcome_mail.py
parentbae4d080349faa50e54de2c7c13b4503afac798d (diff)
Refactored the welcome mail logic and add a test
Diffstat (limited to 'service/test/unit/test_welcome_mail.py')
-rw-r--r--service/test/unit/test_welcome_mail.py73
1 files changed, 73 insertions, 0 deletions
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