Merge pull request #4124 from alphagov/format-inbound-sms-download

Format phone numbers with spaces in download of received text messages
This commit is contained in:
Chris Hill-Scott
2022-01-10 11:12:27 +00:00
committed by GitHub
4 changed files with 41 additions and 33 deletions
+2 -1
View File
@@ -15,6 +15,7 @@ from flask import (
url_for, url_for,
) )
from flask_login import current_user from flask_login import current_user
from notifications_utils.recipients import format_phone_number_human_readable
from werkzeug.utils import redirect from werkzeug.utils import redirect
from app import ( from app import (
@@ -202,7 +203,7 @@ def inbox_download(service_id):
'Message', 'Message',
'Received', 'Received',
]] + [[ ]] + [[
message['user_number'], format_phone_number_human_readable(message['user_number']),
message['content'].lstrip(('=+-@')), message['content'].lstrip(('=+-@')),
format_datetime_numeric(message['created_at']), format_datetime_numeric(message['created_at']),
] for message in service_api_client.get_inbound_sms(service_id)['data']] ] for message in service_api_client.get_inbound_sms(service_id)['data']]
+24
View File
@@ -364,6 +364,30 @@ def org_invite_json(id_, invited_by, org_id, email_address, created_at, status):
} }
def inbound_sms_json():
return {
'has_next': True,
'data': [{
'user_number': phone_number,
'notify_number': '07900000002',
'content': f'message-{index + 1}',
'created_at': (
datetime.utcnow() - timedelta(minutes=60 * hours_ago, seconds=index)
).isoformat(),
'id': sample_uuid(),
} for index, hours_ago, phone_number in (
(0, 1, '447900900000'),
(1, 1, '07900900000'),
(2, 1, '07900900000'),
(3, 3, '07900900002'),
(4, 5, '33(0)1 12345678'), # France
(5, 7, '1-202-555-0104'), # USA in one format
(6, 9, '+12025550104'), # USA in another format
(7, 9, '+68212345'), # Cook Islands
)]
}
TEST_USER_EMAIL = 'test@user.gov.uk' TEST_USER_EMAIL = 'test@user.gov.uk'
+12 -12
View File
@@ -268,10 +268,10 @@ def test_inbound_messages_shows_count_of_messages_when_there_are_no_messages(
'07900 900000 message-2 1 hour ago', '07900 900000 message-2 1 hour ago',
'07900 900000 message-3 1 hour ago', '07900 900000 message-3 1 hour ago',
'07900 900002 message-4 3 hours ago', '07900 900002 message-4 3 hours ago',
'07900 900004 message-5 5 hours ago', '+33 1 12 34 56 78 message-5 5 hours ago',
'07900 900006 message-6 7 hours ago', '+1 202-555-0104 message-6 7 hours ago',
'07900 900008 message-7 9 hours ago', '+1 202-555-0104 message-7 9 hours ago',
'07900 900008 message-8 9 hours ago', '+682 12345 message-8 9 hours ago',
])) ]))
def test_inbox_showing_inbound_messages( def test_inbox_showing_inbound_messages(
client_request, client_request,
@@ -434,14 +434,14 @@ def test_download_inbox(
) )
assert response.get_data(as_text=True) == ( assert response.get_data(as_text=True) == (
'Phone number,Message,Received\r\n' 'Phone number,Message,Received\r\n'
'07900900000,message-1,2016-07-01 13:00\r\n' '07900 900000,message-1,2016-07-01 13:00\r\n'
'07900900000,message-2,2016-07-01 12:59\r\n' '07900 900000,message-2,2016-07-01 12:59\r\n'
'07900900000,message-3,2016-07-01 12:59\r\n' '07900 900000,message-3,2016-07-01 12:59\r\n'
'07900900002,message-4,2016-07-01 10:59\r\n' '07900 900002,message-4,2016-07-01 10:59\r\n'
'07900900004,message-5,2016-07-01 08:59\r\n' '+33 1 12 34 56 78,message-5,2016-07-01 08:59\r\n'
'07900900006,message-6,2016-07-01 06:59\r\n' '+1 202-555-0104,message-6,2016-07-01 06:59\r\n'
'07900900008,message-7,2016-07-01 04:59\r\n' '+1 202-555-0104,message-7,2016-07-01 04:59\r\n'
'07900900008,message-8,2016-07-01 04:59\r\n' '+682 12345,message-8,2016-07-01 04:59\r\n'
) )
+3 -20
View File
@@ -22,6 +22,7 @@ from . import (
broadcast_message_json, broadcast_message_json,
contact_list_json, contact_list_json,
generate_uuid, generate_uuid,
inbound_sms_json,
invite_json, invite_json,
job_json, job_json,
notification_json, notification_json,
@@ -2021,16 +2022,7 @@ def mock_get_inbound_sms(mocker):
user_number=None, user_number=None,
page=1 page=1
): ):
return { return inbound_sms_json()
'has_next': True,
'data': [{
'user_number': '0790090000' + str(i),
'notify_number': '07900000002',
'content': 'message-{}'.format(index + 1),
'created_at': (datetime.utcnow() - timedelta(minutes=60 * (i + 1), seconds=index)).isoformat(),
'id': sample_uuid(),
} for index, i in enumerate([0, 0, 0, 2, 4, 6, 8, 8])]
}
return mocker.patch( return mocker.patch(
'app.service_api_client.get_inbound_sms', 'app.service_api_client.get_inbound_sms',
@@ -2059,16 +2051,7 @@ def mock_get_most_recent_inbound_sms(mocker):
user_number=None, user_number=None,
page=1 page=1
): ):
return { return inbound_sms_json()
'has_next': True,
'data': [{
'user_number': '0790090000' + str(i),
'notify_number': '07900000002',
'content': 'message-{}'.format(index + 1),
'created_at': (datetime.utcnow() - timedelta(minutes=60 * (i + 1), seconds=index)).isoformat(),
'id': sample_uuid(),
} for index, i in enumerate([0, 0, 0, 2, 4, 6, 8, 8])]
}
return mocker.patch( return mocker.patch(
'app.service_api_client.get_most_recent_inbound_sms', 'app.service_api_client.get_most_recent_inbound_sms',