def test_send_reminders_sends_admin_confirmation(self, current_app, smtplib, load_room_ids, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' load_room_ids.return_value = {'all': ['roomID']} server_mock = mock.MagicMock() smtplib.SMTP.return_value = server_mock calendar_mock = mock.MagicMock() calendar_mock.events.return_value.list.return_value.execute.return_value = { 'items': [{ u'end': { u'dateTime': u'2016-10-21T16:30:00' }, u'organizer': { u'email': u'*****@*****.**', }, u'start': { u'dateTime': u'2016-10-21T14:30:00', } }] } current_app.config = { 'CALENDAR': calendar_mock, 'MAIL_SERVER': 'server', 'MAIL_PORT': 25, 'MAIL_USERNAME': '******', 'MAIL_PASSWORD': '******', 'ADMIN_EMAIL': '*****@*****.**' } email_reminder = EmailReminder() email_reminder.send_reminders() message = server_mock.mock_calls[-2][1][2] assert 'Subject: Reminder emails sent.' in message
def test_it_sends_the_correct_message(self, current_app, smtplib, load_room_ids): load_room_ids.return_value = {'all': ['roomID']} server_mock = mock.MagicMock() smtplib.SMTP.return_value = server_mock calendar_mock = mock.MagicMock() calendar_mock.events.return_value.list.return_value.execute.return_value = { 'items': [{ u'end': { u'dateTime': u'2016-10-21T16:30:00' }, u'organizer': { u'email': u'*****@*****.**', }, u'start': { u'dateTime': u'2016-10-21T14:30:00', } }] } current_app.config = { 'CALENDAR': calendar_mock, 'MAIL_SERVER': 'server', 'MAIL_PORT': 25, 'MAIL_USERNAME': '******', 'MAIL_PASSWORD': '******', 'ADMIN_EMAIL': '*****@*****.**' } email_reminder = EmailReminder() email_reminder.send_reminders() message = server_mock.mock_calls[-3][1][2] assert """Content-Type: text/html; charset="us-ascii"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\n\n<p>Hello,</p>\n\n<p>Your meeting room booking details for tomorrow are:</p>\n\n\n <ul>\n <li>Room: None</li>\n <li>Start: 14:30</li>\n <li>End 16:30</li>\n </ul>\n\n\n<p>\n <strong>Delete your room booking if you don\'t need it</strong><br>\n If you don\'t need the room booking anymore, please delete it so someone else can use the room.\n</p>\n<p>\n You can delete a room booking in a series without affecting your future bookings.\n</p>\n<p>\n Read how to delete a room booking using Google Calendar:<br>\n <a href="https://support.google.com/calendar/answer/37113?hl=en&ref_topic=3417926" taget="_blank">https://support.google.com/calendar/answer/37113?hl=en&ref_topic=3417926</a>\n</p>\n<p>\n <strong>Think about using a smaller room</strong><br>\n If you\'ve got fewer people coming to the meeting than you first thought, it would be great if you could try moving to a smaller room.\n</p>\n\n<p>\n Thanks,<br>\n Your friendly meeting room app\n</p>\n""" in message # NOQA
def test_if_its_friday_it_retrieves_monday_events(self, _get_all_days_events): email_reminder = EmailReminder() email_reminder.send_reminders() _get_all_days_events.assert_called_once_with( mock.ANY, mock.ANY, datetime(2016, 11, 28, 16, 9, 0))
def test_subject_is_correct_if_not_friday(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert MIMEMultipart.mock_calls[3][1][1] == 'Your meeting room booking for tomorrow'
def test_subject_is_correct_if_not_friday(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert MIMEMultipart.mock_calls[3][1][1] == 'Your meeting room booking for tomorrow'
def test_error_sending_email_sends_email_to_admin(self): self.server_mock.sendmail.side_effect = [Exception('Something went wrong'), True, True] self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert self.server_mock.mock_calls[1][1][1][0] == '*****@*****.**' assert 'Subject: Error sending email to [email protected]' in self.server_mock.mock_calls[1][1][2] assert 'A wild error appeared! $$$ Something went wrong' in self.server_mock.mock_calls[1][1][2]
def test_error_sending_email_sends_email_to_admin(self): self.server_mock.sendmail.side_effect = [Exception('Something went wrong'), True, True] self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert self.server_mock.mock_calls[1][1][1][0] == '*****@*****.**' assert 'Subject: Error sending email to [email protected]' in self.server_mock.mock_calls[1][1][2] assert 'A wild error appeared! $$$ Something went wrong' in self.server_mock.mock_calls[1][1][2]
def test_it_sends_the_correct_message_if_no_location_set(self): self.events['items'][0].update({u'summary': u'Stuff about stuff'}) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() message = self.server_mock.mock_calls[0][1][2] assert """Title: Stuff about stuff\n Room: Check your calendar\n Start: 14:30\n End: 16:30""" in message
def test_send_reminders_sends_admin_confirmation(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() message = self.server_mock.mock_calls[-1][1][2] assert 'Subject: Reminder emails sent.' in message
def test_send_reminders_sends_admin_confirmation(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() message = self.server_mock.mock_calls[-1][1][2] assert 'Subject: Reminder emails sent.' in message
def test_send_reminders_correctly_calls_the_logged_in_server( self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' self.calendar_mock.events.return_value.list.return_value.execute.return_value = GENERIC_EVENT email_reminder = EmailReminder() email_reminder.send_reminders() assert mock.call.sendmail( '*****@*****.**', ['*****@*****.**'], 'Email message') in self.server_mock.mock_calls
def test_send_reminders_correctly_calls_the_logged_in_server(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' self.calendar_mock.events.return_value.list.return_value.execute.return_value = GENERIC_EVENT email_reminder = EmailReminder() email_reminder.send_reminders() assert mock.call.sendmail( '*****@*****.**', ['*****@*****.**'], 'Email message' ) in self.server_mock.mock_calls
def test_it_sends_the_correct_message_if_no_location_set(self): self.events['items'][0].update({ u'summary': u'Stuff about stuff' }) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() message = self.server_mock.mock_calls[0][1][2] assert """Title: Stuff about stuff\n Room: Check your calendar\n Start: 14:30\n End: 16:30""" in message
def test_resource_email_addresses_are_ignored(self): self.events['items'][0].update({ u'organizer': { u'email': u'*****@*****.**', }, }) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert len(self.server_mock.mock_calls) == 1 assert self.server_mock.mock_calls[0][1][1][0] != '*****@*****.**'
def test_resource_email_addresses_are_ignored(self): self.events['items'][0].update({ u'organizer': { u'email': u'*****@*****.**', }, }) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert len(self.server_mock.mock_calls) == 1 assert self.server_mock.mock_calls[0][1][1][0] != '*****@*****.**'
def test_send_reminders_sends_email_to_multiple_users(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' event_two = self.events['items'][0].copy() event_two.update({ u'organizer': { u'email': u'*****@*****.**', }, }) self.events['items'].append(event_two) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert len(self.server_mock.mock_calls) == 3
def test_send_reminders_sends_email_to_multiple_users(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' event_two = self.events['items'][0].copy() event_two.update({ u'organizer': { u'email': u'*****@*****.**', }, }) self.events['items'].append(event_two) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert len(self.server_mock.mock_calls) == 3
def test_send_reminders_only_sends_one_email_for_multiple_bookings( self, current_app, smtplib, load_room_ids, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' load_room_ids.return_value = {'all': ['roomID']} server_mock = mock.MagicMock() smtplib.SMTP.return_value = server_mock calendar_mock = mock.MagicMock() calendar_mock.events.return_value.list.return_value.execute.return_value = { 'items': [{ u'end': { u'dateTime': u'2016-10-21T16:30:00' }, u'organizer': { u'email': u'*****@*****.**', }, u'start': { u'dateTime': u'2016-10-21T14:30:00', } }, { u'end': { u'dateTime': u'2016-10-21T11:30:00' }, u'organizer': { u'email': u'*****@*****.**', }, u'start': { u'dateTime': u'2016-10-21T10:30:00', } }] } current_app.config = { 'CALENDAR': calendar_mock, 'MAIL_SERVER': 'server', 'MAIL_PORT': 25, 'MAIL_USERNAME': '******', 'MAIL_PASSWORD': '******', 'ADMIN_EMAIL': '*****@*****.**' } email_reminder = EmailReminder() email_reminder.send_reminders() assert mock.call.sendmail('*****@*****.**', ['*****@*****.**'], 'Email message') in server_mock.mock_calls
def test_send_reminders_only_sends_one_email_for_multiple_bookings( self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' event_two = self.events['items'][0].copy() event_two.update({ u'start': { u'dateTime': u'2016-10-21T10:30:00', }, u'end': { u'dateTime': u'2016-10-21T11:30:00' }, }) self.events['items'].append(event_two) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert mock.call.sendmail( '*****@*****.**', ['*****@*****.**'], 'Email message') in self.server_mock.mock_calls
def test_send_reminders_only_sends_one_email_for_multiple_bookings(self, MIMEMultipart): MIMEMultipart.return_value.as_string.return_value = 'Email message' event_two = self.events['items'][0].copy() event_two.update({ u'start': { u'dateTime': u'2016-10-21T10:30:00', }, u'end': { u'dateTime': u'2016-10-21T11:30:00' }, }) self.events['items'].append(event_two) self.calendar_mock.events.return_value.list.return_value.execute.return_value = self.events email_reminder = EmailReminder() email_reminder.send_reminders() assert mock.call.sendmail( '*****@*****.**', ['*****@*****.**'], 'Email message' ) in self.server_mock.mock_calls
def test_if_its_friday_it_retrieves_monday_events(self, _get_all_days_events): email_reminder = EmailReminder() email_reminder.send_reminders() _get_all_days_events.assert_called_once_with(mock.ANY, mock.ANY, datetime(2016, 11, 28, 16, 9, 0))