def test_should_send_reminders_to_all_data_senders(self): send_reminders_on(self.project,self.reminders, self.mock_date, self.sms_client,self.FROM_NUMBER,None) count = 0 for reminder in [self.reminder1,self.reminder3]: for ds in self.data_senders: self.assertEqual((("from_num", ds["mobile_number"],reminder.message),{}),self.sms_client.send_sms.call_args_list[count]) count+=1
def test_should_send_reminders_to_only_data_senders_who_have_not_sent_in_for_period(self): self.reminder1.remind_to = RemindTo.DATASENDERS_WITHOUT_SUBMISSIONS self.reminder3.remind_to = RemindTo.DATASENDERS_WITHOUT_SUBMISSIONS who_have_not_sent_data = [self.data_senders[0],self.data_senders[3]] self.reminder1.get_sender_list.return_value = who_have_not_sent_data self.reminder3.get_sender_list.return_value = who_have_not_sent_data send_reminders_on(self.project,self.reminders, self.mock_date, self.sms_client,self.FROM_NUMBER,None) count = 0 for reminder in [self.reminder1,self.reminder3]: for ds in who_have_not_sent_data: self.assertEqual((("from_num", ds["mobile_number"],reminder.message),{}),self.sms_client.send_sms.call_args_list[count]) count+=1
def test_should_return_reminders_scheduled_for_the_day(self): reminders_sent, total_reminders_sent = send_reminders_on(self.project,self.reminders, self.mock_date, self.sms_client,self.FROM_NUMBER,None) self.assertEqual(2,len(reminders_sent)) self.assertIn(self.reminder1,reminders_sent) self.assertIn(self.reminder3,reminders_sent) self.assertEqual(8, total_reminders_sent)
def test_should_log_reminders_when_sent(self): dbm_mock = Mock(spec=DatabaseManager) sent_reminders, total_reminders_sent = send_reminders_on(self.project,self.reminders, self.mock_date, self.sms_client,self.FROM_NUMBER, dbm_mock) self.assertIn(self.reminder1, sent_reminders) self.reminder1.log.assert_called_once() self.assertIn(self.reminder3, sent_reminders) self.reminder3.log.assert_called_once() self.assertNotIn(self.reminder2, sent_reminders) self.assertEqual(0,self.reminder2.log.call_count)
def test_should_continue_with_sending_reminders_if_exception_in_prev(self): def expected_side_effect(*args): reminder_message = args[3].message if reminder_message == "reminder4 message": raise Exception() else: return 1 self.sms_client.send_reminder = Mock() self.sms_client.send_reminder.side_effect = expected_side_effect reminders = [self.reminder1, self.reminder4, self.reminder3] reminders_sent, total_reminders_sent = send_reminders_on(self.project, reminders, self.mock_date, self.sms_client,self.FROM_NUMBER,None) self.assertEqual(2,len(reminders_sent)) self.assertNotIn(self.reminder4,reminders_sent) self.assertIn(self.reminder1,reminders_sent) self.assertIn(self.reminder3,reminders_sent)