mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-07 11:28:25 -04:00
add tests for get_dashboard_totals
This commit is contained in:
@@ -154,7 +154,7 @@ def get_dashboard_partials(service_id):
|
|||||||
'totals': render_template(
|
'totals': render_template(
|
||||||
'views/dashboard/_totals.html',
|
'views/dashboard/_totals.html',
|
||||||
service_id=service_id,
|
service_id=service_id,
|
||||||
statistics=get_dashboard_totals(service)
|
statistics=get_dashboard_totals(service['data']['statistics'])
|
||||||
),
|
),
|
||||||
'template-statistics': render_template(
|
'template-statistics': render_template(
|
||||||
'views/dashboard/template-statistics.html',
|
'views/dashboard/template-statistics.html',
|
||||||
@@ -176,11 +176,11 @@ def get_dashboard_partials(service_id):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_dashboard_totals(service):
|
def get_dashboard_totals(statistics):
|
||||||
for msg_type in service['data']['statistics'].values():
|
for msg_type in statistics.values():
|
||||||
msg_type['failed_percentage'] = get_formatted_percentage(msg_type['failed'], msg_type['requested'])
|
msg_type['failed_percentage'] = get_formatted_percentage(msg_type['failed'], msg_type['requested'])
|
||||||
msg_type['show_warning'] = float(msg_type['failed_percentage']) > 3
|
msg_type['show_warning'] = float(msg_type['failed_percentage']) > 3
|
||||||
return service['data']['statistics']
|
return statistics
|
||||||
|
|
||||||
|
|
||||||
def calculate_usage(usage):
|
def calculate_usage(usage):
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ def get_formatted_percentage(x, tot):
|
|||||||
"""
|
"""
|
||||||
Return a percentage to one decimal place (respecting )
|
Return a percentage to one decimal place (respecting )
|
||||||
"""
|
"""
|
||||||
return "{0:.1f}".format((float(x) / tot * 100)) if tot else 0
|
return "{0:.1f}".format((float(x) / tot * 100)) if tot else '0'
|
||||||
|
|
||||||
|
|
||||||
def statistics_by_state(statistics):
|
def statistics_by_state(statistics):
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import copy
|
import copy
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
|
|
||||||
|
import pytest
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
|
|
||||||
|
from app.main.views.dashboard import get_dashboard_totals
|
||||||
|
|
||||||
from tests import validate_route_permission
|
from tests import validate_route_permission
|
||||||
from tests.conftest import SERVICE_ONE_ID
|
from tests.conftest import SERVICE_ONE_ID
|
||||||
|
|
||||||
@@ -435,8 +438,8 @@ def test_service_dashboard_updates_gets_dashboard_totals(mocker,
|
|||||||
mock_get_service_statistics,
|
mock_get_service_statistics,
|
||||||
mock_get_usage):
|
mock_get_usage):
|
||||||
dashboard_totals = mocker.patch('app.main.views.dashboard.get_dashboard_totals', return_value={
|
dashboard_totals = mocker.patch('app.main.views.dashboard.get_dashboard_totals', return_value={
|
||||||
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
|
'email': {'requested': 123, 'delivered': 0, 'failed': 0},
|
||||||
'sms': {'requested': 0, 'delivered': 0, 'failed': 0}
|
'sms': {'requested': 456, 'delivered': 0, 'failed': 0}
|
||||||
})
|
})
|
||||||
|
|
||||||
with app_.test_request_context(), app_.test_client() as client:
|
with app_.test_request_context(), app_.test_client() as client:
|
||||||
@@ -444,3 +447,45 @@ def test_service_dashboard_updates_gets_dashboard_totals(mocker,
|
|||||||
response = client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
|
response = client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
|
numbers = [number.text.strip() for number in page.find_all('div', class_='big-number-number')]
|
||||||
|
assert '123' in numbers
|
||||||
|
assert '456' in numbers
|
||||||
|
|
||||||
|
table_rows = page.find_all('tbody')[0].find_all('tr')
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_dashboard_totals_adds_percentages():
|
||||||
|
stats = {
|
||||||
|
'sms': {
|
||||||
|
'requested': 3,
|
||||||
|
'delivered': 0,
|
||||||
|
'failed': 2
|
||||||
|
},
|
||||||
|
'email': {
|
||||||
|
'requested': 0,
|
||||||
|
'delivered': 0,
|
||||||
|
'failed': 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert get_dashboard_totals(stats)['sms']['failed_percentage'] == '66.7'
|
||||||
|
assert get_dashboard_totals(stats)['email']['failed_percentage'] == '0'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'failures,expected', [
|
||||||
|
(2, False),
|
||||||
|
(3, False),
|
||||||
|
(4, True)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
def test_get_dashboard_totals_adds_warning(failures, expected):
|
||||||
|
stats = {
|
||||||
|
'sms': {
|
||||||
|
'requested': 100,
|
||||||
|
'delivered': 0,
|
||||||
|
'failed': failures
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert get_dashboard_totals(stats)['sms']['show_warning'] == expected
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ def test_sum_of_statistics_sums_inputs():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('emails_failed,emails_requested,expected_failure_rate', [
|
@pytest.mark.parametrize('emails_failed,emails_requested,expected_failure_rate', [
|
||||||
(0, 0, 0),
|
(0, 0, '0'),
|
||||||
(0, 1, '0.0'),
|
(0, 1, '0.0'),
|
||||||
(1, 3, '33.3')
|
(1, 3, '33.3')
|
||||||
])
|
])
|
||||||
@@ -69,7 +69,7 @@ def test_add_rates_sets_email_failure_rate(emails_failed, emails_requested, expe
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('sms_failed,sms_requested,expected_failure_rate', [
|
@pytest.mark.parametrize('sms_failed,sms_requested,expected_failure_rate', [
|
||||||
(0, 0, 0),
|
(0, 0, '0'),
|
||||||
(0, 1, '0.0'),
|
(0, 1, '0.0'),
|
||||||
(1, 3, '33.3')
|
(1, 3, '33.3')
|
||||||
])
|
])
|
||||||
|
|||||||
Reference in New Issue
Block a user