Fix trial mode error message when uploading CSV

Problem: it wasn’t saying ‘phone number’ or ‘email address’

Why: we renamed `Recipients.recipient_column_header` to
`Recipients.recipient_column_headers`, and made it return a list, not
a string.

The fix: take the first item of the list, and use that to decide whether
it’s phone numbers or email addresses that you’re not allowed to send
to.

N.B. This won’t work for letters, but we don’t know how trial mode is
going to work for letters anyway.
This commit is contained in:
Chris Hill-Scott
2017-01-23 17:05:41 +00:00
parent e50ca05105
commit 920ac6115c
2 changed files with 32 additions and 2 deletions

View File

@@ -105,9 +105,9 @@
<h1 class='banner-title'>
You cant send to
{{ 'this' if count_of_recipients == 1 else 'these' }}
{{ recipients.recipient_column_header }}
{{ recipients.recipient_column_headers[0] }}
{%- if count_of_recipients != 1 -%}
{{ 'es' if 'email address' == recipients.recipient_column_header else 's' }}
{{ 'es' if 'email address' == recipients.recipient_column_headers[0] else 's' }}
{%- endif %}
</h1>
<p>

View File

@@ -847,6 +847,36 @@ def test_check_messages_shows_too_many_messages_errors(
assert details == expected_msg
def test_check_messages_shows_trial_mode_error(
logged_in_client,
mock_get_users_by_service,
mock_get_service,
mock_get_service_template,
mock_has_permissions,
mock_get_detailed_service_for_today,
mocker
):
mocker.patch('app.main.views.send.s3download', return_value=(
'phone number,\n07900900321' # Not in team
))
with logged_in_client.session_transaction() as session:
session['upload_data'] = {'template_id': ''}
response = logged_in_client.get(url_for(
'main.check_messages',
service_id=uuid.uuid4(),
template_type='sms',
upload_id=uuid.uuid4()
))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert ' '.join(
page.find('div', class_='banner-dangerous').text.split()
) == (
'You cant send to this phone number '
'In trial mode you can only send to yourself and members of your team'
)
def test_check_messages_shows_over_max_row_error(
client,
app_,