From caed19364745f40047d31b766886f6ea0af2065a Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Tue, 9 May 2017 18:17:55 +0100 Subject: [PATCH] Use the new task wrapper methods rather than creating a task directly --- app/delivery/send_to_providers.py | 6 ++ .../notifications_ses_callback.py | 5 +- tests/app/delivery/test_send_to_providers.py | 99 ++++++++++++++----- .../test_notifications_ses_callback.py | 71 +++++++++++-- 4 files changed, 145 insertions(+), 36 deletions(-) diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index f9ca7861f..0a9aa22f0 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -18,6 +18,8 @@ from app.dao.templates_dao import dao_get_template_by_id from app.models import SMS_TYPE, KEY_TYPE_TEST, BRANDING_ORG, EMAIL_TYPE, NOTIFICATION_TECHNICAL_FAILURE, \ NOTIFICATION_SENT, NOTIFICATION_SENDING +from app.celery.statistics_tasks import record_initial_job_statistics, create_initial_notification_statistic_tasks + def send_sms_to_provider(notification): service = notification.service @@ -57,6 +59,8 @@ def send_sms_to_provider(notification): notification.billable_units = template.fragment_count update_notification(notification, provider, notification.international) + create_initial_notification_statistic_tasks(notification) + current_app.logger.info( "SMS {} sent to provider {} at {}".format(notification.id, provider.get_name(), notification.sent_at) ) @@ -107,6 +111,8 @@ def send_email_to_provider(notification): notification.reference = reference update_notification(notification, provider) + create_initial_notification_statistic_tasks(notification) + current_app.logger.info( "Email {} sent to provider at {}".format(notification.id, notification.sent_at) ) diff --git a/app/notifications/notifications_ses_callback.py b/app/notifications/notifications_ses_callback.py index ce8dec9ba..c5ba3306c 100644 --- a/app/notifications/notifications_ses_callback.py +++ b/app/notifications/notifications_ses_callback.py @@ -13,7 +13,7 @@ from app.clients.email.aws_ses import get_aws_responses from app.dao import ( notifications_dao ) - +from app.celery.statistics_tasks import create_outcome_notification_statistic_tasks from app.notifications.process_client_response import validate_callback_data from app.notifications.utils import confirm_subscription @@ -95,6 +95,9 @@ def process_ses_response(): datetime.utcnow(), notification.sent_at ) + + create_outcome_notification_statistic_tasks(notification) + return jsonify( result="success", message="SES callback succeeded" ), 200 diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 0e35ad413..1d243b3e5 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -1,7 +1,7 @@ import uuid from datetime import datetime from collections import namedtuple -from unittest.mock import ANY +from unittest.mock import ANY, call import pytest from notifications_utils.recipients import validate_and_format_phone_number @@ -18,8 +18,7 @@ from app.models import ( KEY_TYPE_TEST, KEY_TYPE_TEAM, BRANDING_ORG, - BRANDING_BOTH, - ProviderDetails) + BRANDING_BOTH) from tests.app.db import create_service, create_template, create_notification @@ -64,6 +63,7 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist( status='created') mocker.patch('app.mmg_client.send_sms') + stats_mock = mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks') send_to_providers.send_sms_to_provider( db_notification @@ -75,6 +75,9 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist( reference=str(db_notification.id), sender=None ) + + stats_mock.assert_called_once_with(db_notification) + notification = Notification.query.filter_by(id=db_notification.id).one() assert notification.status == 'sending' @@ -95,6 +98,7 @@ def test_should_send_personalised_template_to_correct_email_provider_and_persist ) mocker.patch('app.aws_ses_client.send_email', return_value='reference') + stats_mock = mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks') send_to_providers.send_email_to_provider( db_notification @@ -108,6 +112,8 @@ def test_should_send_personalised_template_to_correct_email_provider_and_persist html_body=ANY, reply_to_address=None ) + stats_mock.assert_called_once_with(db_notification) + assert '