diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 6711e29fd..5005186d1 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -186,9 +186,21 @@ def delete_service_template(service_id, template_id): template['template_content'] = template['content'] form = form_objects[template['template_type']](**template) - template_statistics = template_statistics_client.get_template_statistics_for_template(service_id, template['id']) - last_use_message = get_last_use_message(form.name.data, template_statistics) - flash('{}. Are you sure you want to delete it?'.format(last_use_message), 'delete') + try: + last_used_notification = template_statistics_client.get_template_statistics_for_template( + service_id, template['id'] + ) + message = '{} was last used {} ago'.format( + last_used_notification['template']['name'], + get_human_readable_delta( + parse(last_used_notification['created_at']).replace(tzinfo=None), + datetime.utcnow()) + ) + except HTTPError as e: + if e.status_code == 404: + message = '{} has never been used'.format(template['name']) + + flash('{}. Are you sure you want to delete it?'.format(message), 'delete') return render_template( 'views/edit-{}-template.html'.format(template['template_type']), h1='Edit template', diff --git a/tests/__init__.py b/tests/__init__.py index 6e1fef4e6..5892a7884 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -213,6 +213,10 @@ def notification_json( 'next': '/service/{}/notifications'.format(service_id), 'last': '/service/{}/notifications'.format(service_id) } + job_payload = None + if job: + job_payload = {'id': job['id'], 'original_file_name': job['original_file_name']} + data = { 'notifications': [{ 'to': to, @@ -220,7 +224,7 @@ def notification_json( 'id': template['id'], 'name': template['name'], 'template_type': template['template_type']}, - 'job': {'id': job['id'], 'original_file_name': job['original_file_name']} if job else None, + 'job': job_payload, 'sent_at': sent_at, 'status': status, 'created_at': created_at, @@ -228,13 +232,58 @@ def notification_json( 'job_row_number': job_row_number, 'template_version': template['version'] } for i in range(rows)], - 'total': 5, + 'total': rows, 'page_size': 50, 'links': links } return data +def single_notification_json( + service_id, + job=None, + template=None, + to='07123456789', + status=None, + sent_at=None, + job_row_number=None, + created_at=None, + updated_at=None +): + if template is None: + template = template_json(service_id, str(generate_uuid())) + if sent_at is None: + sent_at = str(datetime.utcnow().time()) + if created_at is None: + created_at = str(datetime.utcnow().time()) + if updated_at is None: + updated_at = str((datetime.utcnow() + timedelta(minutes=1)).time()) + if status is None: + status = 'delivered' + job_payload = None + if job: + job_payload = {'id': job['id'], 'original_file_name': job['original_file_name']} + + data = { + 'sent_at': sent_at, + 'billable_units': 1, + 'status': status, + 'created_at': created_at, + 'reference': None, + 'updated_at': updated_at, + 'template_version': 5, + 'service': service_id, + 'id': '29441662-17ce-4ffe-9502-fcaed73b2826', + 'template': template, + 'job_row_number': 0, + 'notification_type': 'sms', + 'api_key': None, + 'job': job_payload, + 'sent_by': 'mmg' + } + return data + + def validate_route_permission(mocker, app_, method, diff --git a/tests/conftest.py b/tests/conftest.py index 25bde5c81..37d5a020f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -14,7 +14,7 @@ from . import ( notification_json, invite_json, sample_uuid, - generate_uuid) + generate_uuid, single_notification_json) from app.notify_client.models import ( User, InvitedUser @@ -1091,20 +1091,8 @@ def mock_get_template_statistics(mocker, service_one, fake_uuid): def mock_get_template_statistics_for_template(mocker, service_one): def _get_stats(service_id, template_id): template = template_json(service_id, template_id, "Test template", "sms", "Something very interesting") - return [ - { - "usage_count": 1, - "template": { - "name": template['name'], - "template_type": template['template_type'], - "id": template['id'] - }, - "service": template['service'], - "id": str(generate_uuid()), - "day": "2016-04-04", - "updated_at": "2016-04-04T12:00:00.000000+00:00" - } - ] + notification = single_notification_json(service_id, template=template) + return notification return mocker.patch( 'app.template_statistics_client.get_template_statistics_for_template', side_effect=_get_stats)