diff --git a/app/main/views/dashboard.py b/app/main/views/dashboard.py
index b7e64997c..437ff0644 100644
--- a/app/main/views/dashboard.py
+++ b/app/main/views/dashboard.py
@@ -334,7 +334,6 @@ def get_dashboard_partials(service_id):
[row['count'] for row in template_statistics] or [0]
),
),
- 'has_template_statistics': bool(template_statistics),
'jobs': render_template(
'views/dashboard/_jobs.html',
jobs=immediate_jobs
diff --git a/app/templates/views/dashboard/dashboard.html b/app/templates/views/dashboard/dashboard.html
index e480efe95..718187a7b 100644
--- a/app/templates/views/dashboard/dashboard.html
+++ b/app/templates/views/dashboard/dashboard.html
@@ -33,13 +33,7 @@
'See messages sent per month'
) }}
- {% if partials['has_template_statistics'] %}
- {{ ajax_block(partials, updates_url, 'template-statistics', interval=5) }}
- {{ show_more(
- url_for('.template_usage', service_id=current_service.id),
- 'See templates used by month'
- ) }}
- {% endif %}
+ {{ ajax_block(partials, updates_url, 'template-statistics', interval=5) }}
{% if partials['has_jobs'] %}
{{ ajax_block(partials, updates_url, 'jobs', interval=5) }}
diff --git a/app/templates/views/dashboard/template-statistics.html b/app/templates/views/dashboard/template-statistics.html
index 1c2564035..cb3554afa 100644
--- a/app/templates/views/dashboard/template-statistics.html
+++ b/app/templates/views/dashboard/template-statistics.html
@@ -2,46 +2,44 @@
{% from "components/message-count-label.html" import message_count_label %}
{% from "components/big-number.html" import big_number %}
{% from "components/table.html" import list_table, field, right_aligned_field_heading, row_heading, spark_bar_field %}
+{% from "components/show-more.html" import show_more %}
-
- {% call(item, row_number) list_table(
- template_statistics,
- caption="Templates used",
- caption_visible=False,
- empty_message='',
- field_headings=[
- 'Template',
- 'Messages sent'
- ],
- field_headings_visible=True
- ) %}
+
+ {% if template_statistics|length > 1 %}
+
+ {% call(item, row_number) list_table(
+ template_statistics,
+ caption="Templates used",
+ caption_visible=False,
+ empty_message='',
+ field_headings=[
+ 'Template',
+ 'Messages sent'
+ ],
+ field_headings_visible=True
+ ) %}
- {% call row_heading() %}
- {% if item.is_precompiled_letter %}
-
- Provided as PDF
-
-
- Letter
-
- {% else %}
-
{{ item.template_name }}
-
- {{ message_count_label(1, item.template_type, suffix='template')|capitalize }}
-
- {% endif %}
- {% endcall %}
- {% if template_statistics|length > 1 %}
- {{ spark_bar_field(item.count, most_used_template_count, id=item.template_id) }}
- {% else %}
- {% call field() %}
-
- {{ big_number(
- item.count,
- smallest=True
- ) }}
-
+ {% call row_heading() %}
+ {% if item.is_precompiled_letter %}
+
+ Provided as PDF
+
+
+ Letter
+
+ {% else %}
+
{{ item.template_name }}
+
+ {{ message_count_label(1, item.template_type, suffix='template')|capitalize }}
+
+ {% endif %}
+ {% endcall %}
+ {{ spark_bar_field(item.count, most_used_template_count, id=item.template_id) }}
{% endcall %}
- {% endif %}
- {% endcall %}
+ {{ show_more(
+ url_for('.template_usage', service_id=current_service.id),
+ 'See templates used by month'
+ ) }}
+
+ {% endif %}
diff --git a/tests/app/main/views/test_dashboard.py b/tests/app/main/views/test_dashboard.py
index c06057af1..409c98362 100644
--- a/tests/app/main/views/test_dashboard.py
+++ b/tests/app/main/views/test_dashboard.py
@@ -496,6 +496,45 @@ def test_should_show_recent_templates_on_dashboard(
assert '100' in table_rows[3].find_all('td')[0].text
+@pytest.mark.parametrize('stats', (
+ pytest.param(
+ [stub_template_stats[0]],
+ ),
+ pytest.param(
+ [stub_template_stats[0], stub_template_stats[1]],
+ marks=pytest.mark.xfail(raises=AssertionError),
+ )
+))
+def test_should_not_show_recent_templates_on_dashboard_if_only_one_template_used(
+ client_request,
+ mocker,
+ mock_get_service_templates,
+ mock_get_jobs,
+ mock_get_service_statistics,
+ mock_get_usage,
+ mock_get_inbound_sms_summary,
+ stats,
+):
+ mock_template_stats = mocker.patch(
+ 'app.template_statistics_client.get_template_statistics_for_service',
+ return_value=stats,
+ )
+
+ page = client_request.get('main.service_dashboard', service_id=SERVICE_ONE_ID)
+ main = page.select_one('main').text
+
+ mock_template_stats.assert_called_once_with(SERVICE_ONE_ID, limit_days=7)
+
+ assert stats[0]['template_name'] == 'one'
+ assert stats[0]['template_name'] not in main
+
+ # count appears as total, but not per template
+ expected_count = stats[0]['count']
+ assert expected_count == 50
+ assert main.count(str(expected_count)) == 1
+ assert '50 text messages sent' in normalize_spaces(main)
+
+
@freeze_time("2016-07-01 12:00") # 4 months into 2016 financial year
@pytest.mark.parametrize('extra_args', [
{},
@@ -763,7 +802,7 @@ def test_should_show_recent_jobs_on_dashboard(
assert third_call[1]['limit_days'] == 7
assert 'scheduled' not in third_call[1]['statuses']
- table_rows = page.find_all('tbody')[2].find_all('tr')
+ table_rows = page.find_all('tbody')[1].find_all('tr')
assert len(table_rows) == 4