Make dashboard totals smaller if numbers are big

Numbers over a billion overflow the two column layout. Numbers over one
hundred thousand overflow the three column layout.

This commit makes the type size smaller in these cases, so that the
numbers still fit in the boxes.
This commit is contained in:
Chris Hill-Scott
2017-11-09 17:17:50 +00:00
parent 86abb7dba9
commit 1412933356
4 changed files with 100 additions and 10 deletions

View File

@@ -461,6 +461,77 @@ def test_correct_columns_display_on_dashboard(
assert len(page.select(column_name)) == expected_column_count
@pytest.mark.parametrize('permissions, totals, big_number_class, expected_column_count', [
(
['email', 'sms'],
{
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
'sms': {'requested': 999999999, 'delivered': 0, 'failed': 0}
},
'.big-number',
2,
),
(
['email', 'sms'],
{
'email': {'requested': 1000000000, 'delivered': 0, 'failed': 0},
'sms': {'requested': 1000000, 'delivered': 0, 'failed': 0}
},
'.big-number-smaller',
2,
),
(
['email', 'sms', 'letter'],
{
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
'sms': {'requested': 99999, 'delivered': 0, 'failed': 0},
'letter': {'requested': 99999, 'delivered': 0, 'failed': 0}
},
'.big-number',
3,
),
(
['email', 'sms', 'letter'],
{
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
'sms': {'requested': 0, 'delivered': 0, 'failed': 0},
'letter': {'requested': 100000, 'delivered': 0, 'failed': 0},
},
'.big-number-smaller',
3,
),
])
def test_correct_font_size_for_big_numbers(
client_request,
mocker,
mock_get_service_templates,
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_jobs,
service_one,
permissions,
totals,
big_number_class,
expected_column_count,
):
service_one['permissions'] = permissions
mocker.patch(
'app.main.views.dashboard.get_dashboard_totals',
return_value=totals
)
page = client_request.get(
'main.service_dashboard',
service_id=service_one['id'],
)
assert expected_column_count == len(
page.select('.big-number-with-status {}'.format(big_number_class))
)
@freeze_time("2016-01-01 11:09:00.061258")
def test_should_show_recent_jobs_on_dashboard(
logged_in_client,