clean up dao_fetch_live_services

a bit of DRY - use the column definitions to determine what goes into
the dict, and use a `next` iterator rather than a while loop to find
the existing service row. Take advantage of dict mutability to avoid
needing to refer to the list by index.

Also change the tests so if there's an error, the diff is slightly
more readable. But not much
This commit is contained in:
Leo Hemsted
2019-05-30 17:41:25 +01:00
parent 208abfc722
commit 968d94d350
3 changed files with 68 additions and 60 deletions

View File

@@ -1,5 +1,6 @@
import uuid
from datetime import datetime
from unittest import mock
import pytest
from freezegun import freeze_time
@@ -386,11 +387,11 @@ def test_get_all_user_services_should_return_empty_list_if_no_services_for_user(
@freeze_time('2019-04-23T10:00:00')
def test_dao_fetch_live_services_data(sample_user, mock):
def test_dao_fetch_live_services_data(sample_user):
org = create_organisation(organisation_type='crown')
service = create_service(go_live_user=sample_user, go_live_at='2014-04-20T10:00:00')
template = create_template(service=service)
service_2 = create_service(service_name='second', go_live_user=sample_user, go_live_at='2017-04-20T10:00:00')
service_2 = create_service(service_name='second', go_live_at='2017-04-20T10:00:00', go_live_user=sample_user)
create_service(service_name='third', go_live_at='2016-04-20T10:00:00')
# below services should be filtered out:
create_service(service_name='restricted', restricted=True)

View File

@@ -137,28 +137,57 @@ def test_get_service_list_should_return_empty_list_if_no_services(admin_request)
assert len(json_resp['data']) == 0
def test_get_live_services_data(sample_user, admin_request, mock):
def test_get_live_services_data(sample_user, admin_request):
org = create_organisation()
service = create_service(go_live_user=sample_user)
service = create_service(go_live_user=sample_user, go_live_at=datetime(2018, 1, 1))
create_service(service_name='second', go_live_at=datetime(2019, 1, 1), go_live_user=sample_user)
template = create_template(service=service)
create_service(service_name='second', go_live_user=sample_user)
template2 = create_template(service=service, template_type='email')
dao_add_service_to_organisation(service=service, organisation_id=org.id)
create_ft_billing(bst_date='2019-04-20', notification_type='sms', template=template, service=service)
create_ft_billing(bst_date='2019-04-20', notification_type='email', template=template2,
service=service)
create_ft_billing(bst_date='2019-04-20', notification_type='email', template=template2, service=service)
response = admin_request.get('service.get_live_services_data')["data"]
assert len(response) == 2
assert {'consent_to_research': None, 'contact_email': 'notify@digital.cabinet-office.gov.uk',
'contact_mobile': '+447700900986', 'contact_name': 'Test User', 'email_totals': 0,
'email_volume_intent': None, 'letter_totals': 0, 'letter_volume_intent': None, 'live_date': None,
'organisation_name': None, 'service_id': mock.ANY, 'service_name': 'second', 'sms_totals': 0,
'sms_volume_intent': None, 'organisation_type': None} in response
assert {'consent_to_research': None, 'contact_email': 'notify@digital.cabinet-office.gov.uk',
'contact_mobile': '+447700900986', 'contact_name': 'Test User', 'email_totals': 1,
'email_volume_intent': None, 'letter_totals': 0, 'letter_volume_intent': None, 'live_date': None,
'organisation_name': 'test_org_1', 'service_id': mock.ANY, 'service_name': 'Sample service',
'sms_totals': 1, 'sms_volume_intent': None, 'organisation_type': None} in response
assert response == [
{
'consent_to_research': None,
'contact_email': 'notify@digital.cabinet-office.gov.uk',
'contact_mobile': '+447700900986',
'contact_name': 'Test User',
'email_totals': 1,
'email_volume_intent': None,
'letter_totals': 0,
'letter_volume_intent': None,
'live_date': 'Mon, 01 Jan 2018 00:00:00 GMT',
'organisation_name': 'test_org_1',
'service_id': ANY,
'service_name': 'Sample service',
'sms_totals': 1,
'sms_volume_intent': None,
'organisation_type': None,
},
{
'consent_to_research': None,
'contact_email': 'notify@digital.cabinet-office.gov.uk',
'contact_mobile': '+447700900986',
'contact_name': 'Test User',
'email_totals': 0,
'email_volume_intent': None,
'letter_totals': 0,
'letter_volume_intent': None,
'live_date': 'Tue, 01 Jan 2019 00:00:00 GMT',
'organisation_name': None,
'service_id': ANY,
'service_name': 'second',
'sms_totals': 0,
'sms_volume_intent': None,
'organisation_type': None,
},
]
def test_get_service_by_id(admin_request, sample_service):