[WIP] updating notification to start in the created status

This commit is contained in:
Rebecca Law
2016-06-21 15:51:30 +01:00
parent b17aaaabfb
commit 3d3bff25a8
4 changed files with 84 additions and 38 deletions

View File

@@ -83,7 +83,8 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist(
notify_db_session,
sample_template_with_placeholders,
mocker):
db_notification = sample_notification(notify_db, notify_db_session, template=sample_template_with_placeholders)
db_notification = sample_notification(notify_db, notify_db_session, template=sample_template_with_placeholders,
to_field="+447234123123", personalisation={"name": "Jo"})
notification = _notification_json(
sample_template_with_placeholders,
@@ -124,13 +125,12 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist(
call("notifications.sms.total-time", ANY)
])
notification = notifications_dao.get_notification(
db_notification.service_id, db_notification.id
)
notification = Notification.query.filter_by(id=db_notification.id).one()
assert notification.status == 'sending'
assert notification.sent_at > now
assert notification.sent_by == 'mmg'
assert notification.content_char_count == 24
def test_should_send_template_to_correct_sms_provider_and_persist(

View File

@@ -39,7 +39,7 @@ from tests.app.conftest import (sample_notification)
def test_should_by_able_to_update_status_by_reference(sample_email_template, ses_provider):
data = _notification_json(sample_email_template)
data = _notification_json(sample_email_template, status='sending')
notification = Notification(**data)
dao_create_notification(
@@ -56,7 +56,7 @@ def test_should_by_able_to_update_status_by_reference(sample_email_template, ses
def test_should_by_able_to_update_status_by_id(sample_template, sample_job, mmg_provider):
data = _notification_json(sample_template, job_id=sample_job.id)
data = _notification_json(sample_template, job_id=sample_job.id, status='sending')
notification = Notification(**data)
dao_create_notification(notification, sample_template.template_type)
assert Notification.query.get(notification.id).status == 'sending'
@@ -76,7 +76,7 @@ def test_should_not_update_status_by_id_if_not_sending_and_does_not_update_job(n
def test_should_by_able_to_update_status_by_id_from_pending_to_delivered(sample_template, sample_job):
data = _notification_json(sample_template, job_id=sample_job.id)
data = _notification_json(sample_template, job_id=sample_job.id, status='sending')
notification = Notification(**data)
dao_create_notification(notification, sample_template.template_type)
assert Notification.query.get(notification.id).status == 'sending'
@@ -92,7 +92,7 @@ def test_should_by_able_to_update_status_by_id_from_pending_to_delivered(sample_
def test_should_by_able_to_update_status_by_id_from_pending_to_temporary_failure(sample_template, sample_job):
data = _notification_json(sample_template, job_id=sample_job.id)
data = _notification_json(sample_template, job_id=sample_job.id, status='sending')
notification = Notification(**data)
dao_create_notification(notification, sample_template.template_type)
assert Notification.query.get(notification.id).status == 'sending'
@@ -111,7 +111,7 @@ def test_should_by_able_to_update_status_by_id_from_pending_to_temporary_failure
def test_should_by_able_to_update_status_by_id_from_sending_to_permanent_failure(sample_template, sample_job):
data = _notification_json(sample_template, job_id=sample_job.id)
data = _notification_json(sample_template, job_id=sample_job.id, status='sending')
notification = Notification(**data)
dao_create_notification(notification, sample_template.template_type)
assert Notification.query.get(notification.id).status == 'sending'
@@ -126,15 +126,14 @@ def test_should_by_able_to_update_status_by_id_from_sending_to_permanent_failure
_assert_job_stats(sample_job.id, sent=1, count=1, delivered=0, failed=1)
def test_should_not_update_status_one_notification_status_is_delivered(sample_email_template, sample_job, ses_provider):
data = _notification_json(sample_email_template, job_id=sample_job.id)
notification = Notification(**data)
dao_create_notification(
notification,
sample_email_template.template_type)
def test_should_not_update_status_one_notification_status_is_delivered(notify_db, notify_db_session,
sample_email_template,
ses_provider):
notification = sample_notification(notify_db=notify_db, notify_db_session=notify_db_session,
template=sample_email_template,
status='sending')
assert Notification.query.get(notification.id).status == "sending"
update_provider_stats(
notification.id,
'email',
@@ -150,16 +149,18 @@ def test_should_not_update_status_one_notification_status_is_delivered(sample_em
_assert_job_stats(notification.job_id, sent=1, count=1, delivered=1, failed=0)
def test_should_be_able_to_record_statistics_failure_for_sms(sample_notification):
assert Notification.query.get(sample_notification.id).status == 'sending'
assert update_notification_status_by_id(sample_notification.id, 'permanent-failure', 'failure')
assert Notification.query.get(sample_notification.id).status == 'permanent-failure'
_assert_notification_stats(sample_notification.service_id, sms_requested=1, sms_delivered=0, sms_failed=1)
_assert_job_stats(sample_notification.job_id, sent=1, count=1, delivered=0, failed=1)
def test_should_be_able_to_record_statistics_failure_for_sms(notify_db, notify_db_session,):
notification = sample_notification(notify_db=notify_db, notify_db_session=notify_db_session, status='sending')
assert Notification.query.get(notification.id).status == 'sending'
assert update_notification_status_by_id(notification.id, 'permanent-failure', 'failure')
assert Notification.query.get(notification.id).status == 'permanent-failure'
_assert_notification_stats(notification.service_id, sms_requested=1, sms_delivered=0, sms_failed=1)
_assert_job_stats(notification.job_id, sent=1, count=1, delivered=0, failed=1)
def test_should_be_able_to_record_statistics_failure_for_email(sample_email_template, sample_job, ses_provider):
data = _notification_json(sample_email_template, job_id=sample_job.id)
data = _notification_json(sample_email_template, job_id=sample_job.id, status='sending')
notification = Notification(**data)
dao_create_notification(notification, sample_email_template.template_type)
@@ -295,6 +296,46 @@ def test_should_be_able_to_get_all_statistics_for_a_service_for_several_days_pre
assert stats[1].day == seven_days_ago.date()
def test_create_notification_creates_notification_with_personalisation(notify_db, notify_db_session,
sample_template_with_placeholders,
sample_job, mmg_provider):
assert Notification.query.count() == 0
assert NotificationStatistics.query.count() == 0
assert TemplateStatistics.query.count() == 0
data = sample_notification(notify_db=notify_db, notify_db_session=notify_db_session,
template=sample_template_with_placeholders,
job=sample_job,
personalisation={'name': 'Jo'},
status='created')
assert Notification.query.count() == 1
notification_from_db = Notification.query.all()[0]
assert notification_from_db.id
assert data.to == notification_from_db.to
assert data.job_id == notification_from_db.job_id
assert data.service == notification_from_db.service
assert data.template == notification_from_db.template
assert data.template_version == notification_from_db.template_version
assert data.created_at == notification_from_db.created_at
assert 'created' == notification_from_db.status
assert {'name': 'Jo'} == notification_from_db.personalisation
_assert_job_stats(sample_job.id, sent=1, count=1, delivered=0, failed=0)
stats = NotificationStatistics.query.filter(
NotificationStatistics.service_id == sample_template_with_placeholders.service.id).first()
assert stats.emails_requested == 0
assert stats.sms_requested == 1
template_stats = TemplateStatistics.query.filter(
TemplateStatistics.service_id == sample_template_with_placeholders.service.id,
TemplateStatistics.template_id == sample_template_with_placeholders.id).first()
assert template_stats.service_id == sample_template_with_placeholders.service.id
assert template_stats.template_id == sample_template_with_placeholders.id
assert template_stats.usage_count == 1
def test_save_notification_creates_sms_and_template_stats(sample_template, sample_job, mmg_provider):
assert Notification.query.count() == 0
assert NotificationStatistics.query.count() == 0
@@ -314,7 +355,7 @@ def test_save_notification_creates_sms_and_template_stats(sample_template, sampl
assert data['template'] == notification_from_db.template
assert data['template_version'] == notification_from_db.template_version
assert data['created_at'] == notification_from_db.created_at
assert 'sending' == notification_from_db.status
assert 'created' == notification_from_db.status
_assert_job_stats(sample_job.id, sent=1, count=1, delivered=0, failed=0)
stats = NotificationStatistics.query.filter(NotificationStatistics.service_id == sample_template.service.id).first()
@@ -347,7 +388,7 @@ def test_save_notification_and_create_email_and_template_stats(sample_email_temp
assert data['template'] == notification_from_db.template
assert data['template_version'] == notification_from_db.template_version
assert data['created_at'] == notification_from_db.created_at
assert 'sending' == notification_from_db.status
assert 'created' == notification_from_db.status
_assert_job_stats(sample_job.id, sent=1, count=1, delivered=0, failed=0)
stats = NotificationStatistics.query.filter(
@@ -484,7 +525,7 @@ def test_save_notification_and_increment_job(sample_template, sample_job, mmg_pr
assert data['template'] == notification_from_db.template
assert data['template_version'] == notification_from_db.template_version
assert data['created_at'] == notification_from_db.created_at
assert 'sending' == notification_from_db.status
assert 'created' == notification_from_db.status
assert Job.query.get(sample_job.id).notifications_sent == 1
notification_2 = Notification(**data)
@@ -535,7 +576,7 @@ def test_save_notification_and_increment_correct_job(notify_db, notify_db_sessio
assert data['template'] == notification_from_db.template
assert data['template_version'] == notification_from_db.template_version
assert data['created_at'] == notification_from_db.created_at
assert 'sending' == notification_from_db.status
assert 'created' == notification_from_db.status
assert job_1.id != job_2.id
_assert_job_stats(job_id=job_1.id, sent=1, count=1)
_assert_job_stats(job_id=job_2.id, sent=0, count=1)
@@ -556,7 +597,7 @@ def test_save_notification_with_no_job(sample_template, mmg_provider):
assert data['template'] == notification_from_db.template
assert data['template_version'] == notification_from_db.template_version
assert data['created_at'] == notification_from_db.created_at
assert 'sending' == notification_from_db.status
assert 'created' == notification_from_db.status
def test_get_notification(sample_notification):
@@ -580,7 +621,8 @@ def test_save_notification_no_job_id(sample_template, mmg_provider):
assert data['service'] == notification_from_db.service
assert data['template'] == notification_from_db.template
assert data['template_version'] == notification_from_db.template_version
assert 'sending' == notification_from_db.status
assert 'created' == notification_from_db.status
assert data.get('job_id') is None
def test_get_notification_for_job(sample_notification):
@@ -917,7 +959,7 @@ def test_sms_fragment_count(char_count, expected_sms_fragment_count):
assert get_sms_fragment_count(char_count) == expected_sms_fragment_count
def _notification_json(sample_template, job_id=None, id=None):
def _notification_json(sample_template, job_id=None, id=None, status=None):
data = {
'to': '+44709123456',
'service': sample_template.service,
@@ -926,12 +968,14 @@ def _notification_json(sample_template, job_id=None, id=None):
'template_id': sample_template.id,
'template_version': sample_template.version,
'created_at': datetime.utcnow(),
'content_char_count': 160
'content_char_count': 160,
}
if job_id:
data.update({'job_id': job_id})
if id:
data.update({'id': id})
if status:
data.update({'status': status})
return data