def __init__(self, mock_mf): """Create an instance of BulkMailCampaign for testing. Also test if it is initialized correctly.""" self.bmc = BulkMailCampaign(**self.args) assert len(self.bmc._mails) == 1 # MailFactory calls it `variables` and not `global_vars` # Rename it. Laziness self.args["variables"] = self.args["global_vars"] self.args.pop("global_vars", None) mock_mf.assert_called_once_with(**self.args) # acquire the actual Envelope object self.bmc._mails = [MailFactory(**self.args)] # Rename it back self.args["global_vars"] = self.args["variables"] self.args.pop("variables", None)
class TestBulkMailCampaign(object): """Class to test deltamail.campaign.BulkMailCampaign class""" args = { "from_addr": "*****@*****.**", "subject": "BulkMail : Greetings from {{company}}", "mailing_list": ["*****@*****.**", "*****@*****.**"], "template_str": "Hello Human, greetings from {{company}}.\nCopyright @ {{year}}", "global_vars": { "company": "Festember", "year": 2015 } } subject_evaled = "BulkMail : Greetings from Festember" body_evaled = "Hello Human, greetings from Festember.\nCopyright @ 2015" @patch('deltamail.campaign.MailFactory', autospec=True) def __init__(self, mock_mf): """Create an instance of BulkMailCampaign for testing. Also test if it is initialized correctly.""" self.bmc = BulkMailCampaign(**self.args) assert len(self.bmc._mails) == 1 # MailFactory calls it `variables` and not `global_vars` # Rename it. Laziness self.args["variables"] = self.args["global_vars"] self.args.pop("global_vars", None) mock_mf.assert_called_once_with(**self.args) # acquire the actual Envelope object self.bmc._mails = [MailFactory(**self.args)] # Rename it back self.args["global_vars"] = self.args["variables"] self.args.pop("variables", None) @patch('deltamail.campaign.os.path.isdir', autospec=True) @patch('deltamail.campaign.os.mkdir', autospec=True) @patch('deltamail.campaign.open') def test_preview_default(self, mk_open, mock_mkdir, mock_isdir): """Test BulkMailCampaign.preview() with no args""" newdirpath = path.join(os.getcwd(), "email-preview", "") preview_file_name = self.subject_evaled + "-" + ",".join( self.args["mailing_list"]) preview_file_name = preview_file_name[:MAX_PREVIEW_FILE_LEN] + ".html" preview_file_name = preview_file_name.replace(r"/", "-") preview_file_name = preview_file_name.replace("\\", "-") preview_file_name = preview_file_name.replace(r":", "-") preview_file_path = path.join(newdirpath, preview_file_name) open_return_mock = Mock() mk_open.return_value = open_return_mock mock_isdir.return_value = True self.bmc.preview() mock_mkdir.assert_called_once_with(newdirpath) mk_open.assert_called_once_with(preview_file_path, "w") open_return_mock.write.assert_called_once_with(self.body_evaled) open_return_mock.close.assert_called_once_with() @patch('deltamail.campaign.os.path.isdir', autospec=True) @patch('deltamail.campaign.os.mkdir', autospec=True) @patch('deltamail.campaign.open') def test_preview_with_location(self, mk_open, mock_mkdir, mock_isdir): """Test BulkMailCampaign.preview() with location argument""" newdirpath = "./tests/preview-mails/TestBulkMailCampaign/" preview_file_name = self.subject_evaled + "-" + ",".join( self.args["mailing_list"]) preview_file_name = preview_file_name[:MAX_PREVIEW_FILE_LEN] + ".html" preview_file_name = preview_file_name.replace(r"/", "-") preview_file_name = preview_file_name.replace("\\", "-") preview_file_name = preview_file_name.replace(r":", "-") preview_file_path = path.join(newdirpath, preview_file_name) open_return_mock = Mock() mk_open.return_value = open_return_mock self.bmc.preview(newdirpath) mock_mkdir.assert_not_called() mk_open.assert_called_once_with(preview_file_path, "w") open_return_mock.write.assert_called_once_with(self.body_evaled) open_return_mock.close.assert_called_once_with() def test_send(self): """Test the BulkMailCampaign.send() method""" mock_mailer = Mock(spec=['send']) self.bmc.send(mock_mailer) mock_mailer.send.assert_called_once_with(self.bmc._mails[0]) def test_preview_in_browser(self): """Test the preview_in_browser() method""" # UNTESTED! pass
class TestBulkMailCampaign(object): """Class to test deltamail.campaign.BulkMailCampaign class""" args = { "from_addr": "*****@*****.**", "subject": "BulkMail : Greetings from {{company}}", "mailing_list": ["*****@*****.**", "*****@*****.**"], "template_str": "Hello Human, greetings from {{company}}.\nCopyright @ {{year}}", "global_vars": {"company": "Festember", "year": 2015}, } subject_evaled = "BulkMail : Greetings from Festember" body_evaled = "Hello Human, greetings from Festember.\nCopyright @ 2015" @patch("deltamail.campaign.MailFactory", autospec=True) def __init__(self, mock_mf): """Create an instance of BulkMailCampaign for testing. Also test if it is initialized correctly.""" self.bmc = BulkMailCampaign(**self.args) assert len(self.bmc._mails) == 1 # MailFactory calls it `variables` and not `global_vars` # Rename it. Laziness self.args["variables"] = self.args["global_vars"] self.args.pop("global_vars", None) mock_mf.assert_called_once_with(**self.args) # acquire the actual Envelope object self.bmc._mails = [MailFactory(**self.args)] # Rename it back self.args["global_vars"] = self.args["variables"] self.args.pop("variables", None) @patch("deltamail.campaign.os.path.isdir", autospec=True) @patch("deltamail.campaign.os.mkdir", autospec=True) @patch("deltamail.campaign.open") def test_preview_default(self, mk_open, mock_mkdir, mock_isdir): """Test BulkMailCampaign.preview() with no args""" newdirpath = path.join(os.getcwd(), "email-preview", "") preview_file_name = self.subject_evaled + "-" + ",".join(self.args["mailing_list"]) preview_file_name = preview_file_name[:MAX_PREVIEW_FILE_LEN] + ".html" preview_file_name = preview_file_name.replace(r"/", "-") preview_file_name = preview_file_name.replace("\\", "-") preview_file_name = preview_file_name.replace(r":", "-") preview_file_path = path.join(newdirpath, preview_file_name) open_return_mock = Mock() mk_open.return_value = open_return_mock mock_isdir.return_value = True self.bmc.preview() mock_mkdir.assert_called_once_with(newdirpath) mk_open.assert_called_once_with(preview_file_path, "w") open_return_mock.write.assert_called_once_with(self.body_evaled) open_return_mock.close.assert_called_once_with() @patch("deltamail.campaign.os.path.isdir", autospec=True) @patch("deltamail.campaign.os.mkdir", autospec=True) @patch("deltamail.campaign.open") def test_preview_with_location(self, mk_open, mock_mkdir, mock_isdir): """Test BulkMailCampaign.preview() with location argument""" newdirpath = "./tests/preview-mails/TestBulkMailCampaign/" preview_file_name = self.subject_evaled + "-" + ",".join(self.args["mailing_list"]) preview_file_name = preview_file_name[:MAX_PREVIEW_FILE_LEN] + ".html" preview_file_name = preview_file_name.replace(r"/", "-") preview_file_name = preview_file_name.replace("\\", "-") preview_file_name = preview_file_name.replace(r":", "-") preview_file_path = path.join(newdirpath, preview_file_name) open_return_mock = Mock() mk_open.return_value = open_return_mock self.bmc.preview(newdirpath) mock_mkdir.assert_not_called() mk_open.assert_called_once_with(preview_file_path, "w") open_return_mock.write.assert_called_once_with(self.body_evaled) open_return_mock.close.assert_called_once_with() def test_send(self): """Test the BulkMailCampaign.send() method""" mock_mailer = Mock(spec=["send"]) self.bmc.send(mock_mailer) mock_mailer.send.assert_called_once_with(self.bmc._mails[0]) def test_preview_in_browser(self): """Test the preview_in_browser() method""" # UNTESTED! pass