diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index 7cb5c2d34..8315ad362 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -29,6 +29,7 @@ from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.orm.exc import NoResultFound from app.celery.tasks import s3 from app.celery import tasks +from app.dao.provider_statistics_dao import get_provider_statistics from tests.app import load_example_csv from datetime import datetime, timedelta from freezegun import freeze_time @@ -331,7 +332,7 @@ def test_should_process_all_sms_job(sample_job, assert encryption.encrypt.call_args[0][0]['to'] == '+441234123120' assert encryption.encrypt.call_args[0][0]['template'] == str(sample_job_with_placeholdered_template.template.id) assert encryption.encrypt.call_args[0][0][ - 'template_version'] == sample_job_with_placeholdered_template.template.version + 'template_version'] == sample_job_with_placeholdered_template.template.version assert encryption.encrypt.call_args[0][0]['personalisation'] == {'name': 'chris'} tasks.send_sms.apply_async.call_count == 10 job = jobs_dao.dao_get_job_by_id(sample_job_with_placeholdered_template.id) @@ -1084,6 +1085,93 @@ def test_should_call_send_email_response_task_if_research_mode( assert persisted_notification.reference == str(reference) +def test_should_call_send_not_update_provider_email_stats_if_research_mode( + notify_db, + sample_service, + sample_email_template, + ses_provider, + mocker): + notification = _notification_json( + sample_email_template, + to="john@smith.com" + ) + + reference = uuid.uuid4() + + mocker.patch('app.uuid.uuid4', return_value=reference) + mocker.patch('app.encryption.decrypt', return_value=notification) + mocker.patch('app.aws_ses_client.send_email') + mocker.patch('app.aws_ses_client.get_name', return_value="ses") + mocker.patch('app.celery.research_mode_tasks.send_email_response.apply_async') + + sample_service.research_mode = True + notify_db.session.add(sample_service) + notify_db.session.commit() + + assert not get_provider_statistics( + sample_email_template.service, + providers=[ses_provider.identifier]).first() + + notification_id = uuid.uuid4() + now = datetime.utcnow() + send_email( + sample_service.id, + notification_id, + "myservice@notify.com", + "encrypted-in-reality", + now.strftime(DATETIME_FORMAT) + ) + assert not aws_ses_client.send_email.called + send_email_response.apply_async.assert_called_once_with( + ('ses', str(reference), 'john@smith.com'), queue="research-mode" + ) + + assert not get_provider_statistics( + sample_email_template.service, + providers=[ses_provider.identifier]).first() + + +def test_should_call_send_sms_response_task_if_research_mode( + notify_db, + sample_service, + sample_template, + mmg_provider, + mocker): + notification = _notification_json( + sample_template, + to="+447234123123" + ) + mocker.patch('app.encryption.decrypt', return_value=notification) + mocker.patch('app.mmg_client.send_sms') + mocker.patch('app.mmg_client.get_name', return_value="mmg") + mocker.patch('app.celery.research_mode_tasks.send_sms_response.apply_async') + + sample_service.research_mode = True + notify_db.session.add(sample_service) + notify_db.session.commit() + + assert not get_provider_statistics( + sample_template.service, + providers=[mmg_provider.identifier]).first() + + notification_id = uuid.uuid4() + now = datetime.utcnow() + send_sms( + sample_service.id, + notification_id, + "encrypted-in-reality", + now.strftime(DATETIME_FORMAT) + ) + assert not mmg_client.send_sms.called + send_sms_response.apply_async.assert_called_once_with( + ('mmg', str(notification_id), "+447234123123"), queue='research-mode' + ) + + assert not get_provider_statistics( + sample_template.service, + providers=[mmg_provider.identifier]).first() + + def _notification_json(template, to, personalisation=None, job_id=None, row_number=None): notification = { "template": template.id,