diff --git a/app/celery/tasks.py b/app/celery/tasks.py index 616d9ee77..0d3a6bb4f 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -4,6 +4,7 @@ from collections import namedtuple, defaultdict from flask import current_app from notifications_utils.recipients import ( + format_postcode_for_printing, RecipientCSV ) from notifications_utils.statsd_decorators import statsd @@ -305,6 +306,10 @@ def save_letter( # we store the recipient as just the first item of the person's address recipient = notification['personalisation']['addressline1'] + notification['personalisation']['postcode'] = format_postcode_for_printing( + notification['personalisation']['postcode'] + ) + service = dao_fetch_service_by_id(service_id) template = dao_get_template_by_id(notification['template'], version=notification['template_version']) diff --git a/requirements-app.txt b/requirements-app.txt index f719bba6b..07d295255 100644 --- a/requirements-app.txt +++ b/requirements-app.txt @@ -27,4 +27,4 @@ notifications-python-client==5.5.1 awscli-cwlogs>=1.4,<1.5 -git+https://github.com/alphagov/notifications-utils.git@36.6.2#egg=notifications-utils==36.6.2 +git+https://github.com/alphagov/notifications-utils.git@36.8.0#egg=notifications-utils==36.8.0 diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index 698e61e74..05f3d3514 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -961,7 +961,7 @@ def test_save_letter_saves_letter_to_database(mocker, notify_db_session): 'addressline4': 'Wibble', 'addressline5': 'Wobble', 'addressline6': 'Wubble', - 'postcode': 'Flob', + 'postcode': 'SE1 2SA', } notification_json = _notification_json( template=job.template, @@ -1021,6 +1021,31 @@ def test_save_letter_saves_letter_to_database_with_correct_postage(mocker, notif assert notification_db.postage == postage +def test_save_letter_saves_letter_to_database_with_formatted_postcode(mocker, notify_db_session): + service = create_service(service_permissions=[LETTER_TYPE]) + template = create_template(service=service, template_type=LETTER_TYPE) + letter_job = create_job(template=template) + + mocker.patch('app.celery.tasks.letters_pdf_tasks.create_letters_pdf.apply_async') + notification_json = _notification_json( + template=letter_job.template, + to='Foo', + personalisation={'addressline1': 'Foo', 'addressline2': 'Bar', 'postcode': 'se1 64sa'}, + job_id=letter_job.id, + row_number=1 + ) + notification_id = uuid.uuid4() + save_letter( + letter_job.service_id, + notification_id, + encryption.encrypt(notification_json), + ) + + notification_db = Notification.query.one() + assert notification_db.id == notification_id + assert notification_db.personalisation["postcode"] == "SE16 4SA" + + def test_save_letter_saves_letter_to_database_right_reply_to(mocker, notify_db_session): service = create_service() create_letter_contact(service=service, contact_block="Address contact", is_default=True) @@ -1037,7 +1062,7 @@ def test_save_letter_saves_letter_to_database_right_reply_to(mocker, notify_db_s 'addressline4': 'Wibble', 'addressline5': 'Wobble', 'addressline6': 'Wubble', - 'postcode': 'Flob', + 'postcode': 'SE1 3WS', } notification_json = _notification_json( template=job.template,