Rename to performance_dashboard

Fix totals to return totals for all time rather than for date range.
Added more test data
This commit is contained in:
Rebecca Law
2021-03-10 11:12:29 +00:00
parent b06850e611
commit 11d10d5293
13 changed files with 149 additions and 89 deletions

View File

@@ -709,6 +709,19 @@ def test_get_total_notifications_for_date_range(sample_service):
template_sms = create_template(service=sample_service, template_type='sms', template_name='a')
template_email = create_template(service=sample_service, template_type='email', template_name='b')
template_letter = create_template(service=sample_service, template_type='letter', template_name='c')
create_ft_notification_status(bst_date=date(2021, 2, 28),
service=template_email.service,
template=template_email,
count=15)
create_ft_notification_status(bst_date=date(2021, 2, 28),
service=template_sms.service,
template=template_sms,
count=20)
create_ft_notification_status(bst_date=date(2021, 2, 28),
service=template_letter.service,
template=template_letter,
count=3)
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_email.service,
template=template_email,
@@ -725,5 +738,4 @@ def test_get_total_notifications_for_date_range(sample_service):
results = get_total_notifications_for_date_range(start_date=datetime(2021, 3, 1), end_date=datetime(2021, 3, 1))
assert len(results) == 1
print(type(results[0].emails))
assert results[0] == ("2021-03-01", 15, 20, 3)
assert results[0] == ("2021-03-01", 15, 20, 3)

View File

@@ -1,11 +1,11 @@
from datetime import datetime
from decimal import Decimal
from freezegun import freeze_time
from app.dao import fact_processing_time_dao
from app.dao.fact_processing_time_dao import get_processing_time_percentage_for_date_range
from app.models import FactProcessingTime
from tests.app.db import create_process_time
def test_insert_update_processing_time(notify_db_session):
@@ -45,13 +45,21 @@ def test_insert_update_processing_time(notify_db_session):
def test_get_processing_time_percentage_for_date_range(notify_db_session):
data = FactProcessingTime(
bst_date=datetime(2021, 2, 22).date(),
create_process_time(
bst_date='2021-02-21',
messages_total=5,
messages_within_10_secs=4
)
create_process_time(
bst_date='2021-02-22',
messages_total=3,
messages_within_10_secs=2
)
fact_processing_time_dao.insert_update_processing_time(data)
create_process_time(
bst_date='2021-02-23',
messages_total=4,
messages_within_10_secs=3
)
results = get_processing_time_percentage_for_date_range('2021-02-22', '2021-02-22')

View File

@@ -1178,5 +1178,3 @@ def test_get_live_services_with_organisation(sample_organisation):
(live_service_diff_org.name, another_org.name),
(live_service.name, sample_organisation.name),
(service_without_org.name, None)]

View File

@@ -5,6 +5,7 @@ from datetime import datetime, date, timedelta
import pytest
from app import db
from app.dao import fact_processing_time_dao
from app.dao.email_branding_dao import dao_create_email_branding
from app.dao.inbound_sms_dao import dao_create_inbound_sms
from app.dao.invited_org_user_dao import save_invited_org_user
@@ -67,7 +68,7 @@ from app.models import (
BroadcastEvent,
BroadcastProvider,
BroadcastProviderMessage,
BroadcastProviderMessageNumber
BroadcastProviderMessageNumber, FactProcessingTime
)
@@ -752,6 +753,15 @@ def create_ft_notification_status(
return data
def create_process_time(bst_date='2021-03-01', messages_total=35, messages_within_10_secs=34):
data = FactProcessingTime(
bst_date=bst_date,
messages_total=messages_total,
messages_within_10_secs=messages_within_10_secs
)
fact_processing_time_dao.insert_update_processing_time(data)
def create_service_guest_list(service, email_address=None, mobile_number=None):
if email_address:
guest_list_user = ServiceGuestList.from_string(service.id, EMAIL_TYPE, email_address)

View File

@@ -0,0 +1,77 @@
from datetime import date
from tests.app.db import create_template, create_ft_notification_status, create_process_time
def test_performance_dashboard(sample_service, admin_request):
template_sms = create_template(service=sample_service, template_type='sms', template_name='a')
template_email = create_template(service=sample_service, template_type='email', template_name='b')
template_letter = create_template(service=sample_service, template_type='letter', template_name='c')
create_ft_notification_status(bst_date=date(2021, 2, 28),
service=template_email.service,
template=template_email,
count=10)
create_ft_notification_status(bst_date=date(2021, 2, 28),
service=template_sms.service,
template=template_sms,
count=5)
create_ft_notification_status(bst_date=date(2021, 2, 28),
service=template_letter.service,
template=template_letter,
count=2)
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_email.service,
template=template_email,
count=15)
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_sms.service,
template=template_sms,
count=20)
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_letter.service,
template=template_letter,
count=3)
create_ft_notification_status(bst_date=date(2021, 3, 2),
service=template_email.service,
template=template_email,
count=25)
create_ft_notification_status(bst_date=date(2021, 3, 2),
service=template_sms.service,
template=template_sms,
count=30)
create_ft_notification_status(bst_date=date(2021, 3, 2),
service=template_letter.service,
template=template_letter,
count=10)
create_ft_notification_status(bst_date=date(2021, 3, 3),
service=template_email.service,
template=template_email,
count=45)
create_ft_notification_status(bst_date=date(2021, 3, 3),
service=template_sms.service,
template=template_sms,
count=35)
create_ft_notification_status(bst_date=date(2021, 3, 3),
service=template_letter.service,
template=template_letter,
count=15)
create_process_time(bst_date='2021-02-28', messages_total=15, messages_within_10_secs=14)
create_process_time(bst_date='2021-03-01', messages_total=35, messages_within_10_secs=34)
create_process_time(bst_date='2021-03-02', messages_total=15, messages_within_10_secs=14)
create_process_time(bst_date='2021-03-03', messages_total=15, messages_within_10_secs=14)
results = admin_request.get(endpoint="performance_dashboard.get_performance_dashboard",
start_date='2021-03-01',
end_date='2021-03-02')
assert results['total_notifications'] == 10+5+2+15+20+3+25+30+10+45+35+15
assert results['email_notifications'] == 10+15+25+45
assert results['sms_notifications'] == 5+20+30+35
assert results['letter_notifications'] == 2+3+10+15
assert results['notifications_by_type'] == [{"date": '2021-03-01', "emails": 15, "sms": 20, "letters": 3},
{"date": '2021-03-02', "emails": 25, "sms": 30, "letters": 10}]
assert results['processing_time'] == [{"date": "2021-03-01", "percentage_under_10_seconds": 97.1},
{"date": "2021-03-02", "percentage_under_10_seconds": 93.3}]
assert results["live_service_count"] == 1
assert results["services_using_notify"][0]["service_name"] == sample_service.name
assert not results["services_using_notify"][0]["organisation_name"]

View File

@@ -1,48 +0,0 @@
from datetime import date, datetime
from app.dao import fact_processing_time_dao
from app.models import FactProcessingTime
from tests.app.db import create_template, create_ft_notification_status
def test_performance_platform(sample_service, admin_request):
template_sms = create_template(service=sample_service, template_type='sms', template_name='a')
template_email = create_template(service=sample_service, template_type='email', template_name='b')
template_letter = create_template(service=sample_service, template_type='letter', template_name='c')
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_email.service,
template=template_email,
count=15)
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_sms.service,
template=template_sms,
count=20)
create_ft_notification_status(bst_date=date(2021, 3, 1),
service=template_letter.service,
template=template_letter,
count=3)
create_process_time()
results = admin_request.get(endpoint="performance_platform.get_performance_platform",
start_date='2021-03-01',
end_date='2021-03-01')
assert results['total_notifications'] == 15+20+3
assert results['email_notifications'] == 15
assert results['sms_notifications'] == 20
assert results['letter_notifications'] == 3
assert results['notifications_by_type'] == [{"date": '2021-03-01', "emails": 15, "sms": 20, "letters": 3}]
assert results['processing_time'] == [({"date": "2021-03-01", "percentage_under_10_seconds": 97.1})]
assert results["live_service_count"] == 1
assert results["services_using_notify"][0]["service_name"] == sample_service.name
assert not results["services_using_notify"][0]["organisation_name"]
def create_process_time():
data = FactProcessingTime(
bst_date=datetime(2021, 3, 1).date(),
messages_total=35,
messages_within_10_secs=34
)
fact_processing_time_dao.insert_update_processing_time(data)