def send_scheduled_notifications(): try: scheduled_notifications = dao_get_scheduled_notifications() for notification in scheduled_notifications: send_notification_to_queue(notification, notification.service.research_mode) set_scheduled_notification_to_processed(notification.id) current_app.logger.info( "Sent {} scheduled notifications to the provider queue".format(len(scheduled_notifications))) except SQLAlchemyError: current_app.logger.exception("Failed to send scheduled notifications") raise
def test_should_send_all_scheduled_notifications_to_deliver_queue( sample_template, mocker): mocked = mocker.patch('app.celery.provider_tasks.deliver_sms') message_to_deliver = create_notification(template=sample_template, scheduled_for="2017-05-01 13:15") create_notification(template=sample_template, scheduled_for="2017-05-01 10:15", status='delivered') create_notification(template=sample_template) create_notification(template=sample_template, scheduled_for="2017-05-01 14:15") scheduled_notifications = dao_get_scheduled_notifications() assert len(scheduled_notifications) == 1 send_scheduled_notifications() mocked.apply_async.assert_called_once_with([str(message_to_deliver.id)], queue='send-sms-tasks') scheduled_notifications = dao_get_scheduled_notifications() assert not scheduled_notifications