mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
separate detailed and normal service_api_client.get_service
to make it easier to mock and control return values
This commit is contained in:
@@ -148,8 +148,7 @@ def get_dashboard_partials(service_id):
|
||||
lambda job: job['original_file_name'] != current_app.config['TEST_MESSAGE_FILENAME'],
|
||||
job_api_client.get_job(service_id, limit_days=7)['data']
|
||||
))
|
||||
|
||||
service = service_api_client.get_service(service_id, detailed=True)
|
||||
service = service_api_client.get_detailed_service(service_id)
|
||||
|
||||
return {
|
||||
'totals': render_template(
|
||||
@@ -178,10 +177,10 @@ def get_dashboard_partials(service_id):
|
||||
|
||||
|
||||
def get_dashboard_totals(service):
|
||||
for msg_type in service['statistics']:
|
||||
for msg_type in service['data']['statistics'].values():
|
||||
msg_type['failed_percentage'] = get_formatted_percentage(msg_type['failed'], msg_type['requested'])
|
||||
msg_type['show_warning'] = msg_type['failed_percentage'] > 3
|
||||
return service['statistics']
|
||||
msg_type['show_warning'] = float(msg_type['failed_percentage']) > 3
|
||||
return service['data']['statistics']
|
||||
|
||||
|
||||
def calculate_usage(usage):
|
||||
|
||||
@@ -41,7 +41,13 @@ class ServiceAPIClient(NotificationsAPIClient):
|
||||
data = _attach_current_user({})
|
||||
return self.delete(endpoint, data)
|
||||
|
||||
def get_service(self, service_id, detailed=False):
|
||||
def get_service(self, service_id):
|
||||
return self._get_service(service_id, False)
|
||||
|
||||
def get_detailed_service(self, service_id):
|
||||
return self._get_service(service_id, True)
|
||||
|
||||
def _get_service(self, service_id, detailed):
|
||||
"""
|
||||
Retrieve a service.
|
||||
"""
|
||||
|
||||
@@ -31,9 +31,9 @@ def sum_of_statistics(delivery_statistics):
|
||||
def add_rates_to(delivery_statistics):
|
||||
|
||||
return dict(
|
||||
email_failure_rate=get_formatted_percentage(
|
||||
delivery_statistics['email_failed'],
|
||||
delivery_statistics['email_requested']),
|
||||
emails_failure_rate=get_formatted_percentage(
|
||||
delivery_statistics['emails_failed'],
|
||||
delivery_statistics['emails_requested']),
|
||||
sms_failure_rate=get_formatted_percentage(
|
||||
delivery_statistics['sms_failed'],
|
||||
delivery_statistics['sms_requested']),
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
statistics['email']['failed'],
|
||||
statistics['email']['failed_percentage'],
|
||||
statistics['email']['show_warning'],
|
||||
failure_link=url_for(".view_notifications", service_id=id, message_type='email', status='failed'),
|
||||
link=url_for(".view_notifications", service_id=id, message_type='email', status='sending,delivered,failed')
|
||||
failure_link=url_for(".view_notifications", service_id=service_id, message_type='email', status='failed'),
|
||||
link=url_for(".view_notifications", service_id=service_id, message_type='email', status='sending,delivered,failed')
|
||||
) }}
|
||||
</div>
|
||||
<div class="column-half">
|
||||
|
||||
@@ -13,11 +13,11 @@ class TestClient(FlaskClient):
|
||||
session['user_id'] = user.id
|
||||
session['_fresh'] = True
|
||||
if mocker:
|
||||
get_user_mock = mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
create_event_mock = mocker.patch('app.events_api_client.create_event')
|
||||
if service:
|
||||
session['service_id'] = service['id']
|
||||
get_service_mock = mocker.patch('app.service_api_client.get_service', return_value={'data': service})
|
||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
mocker.patch('app.events_api_client.create_event')
|
||||
if mocker and service:
|
||||
session['service_id'] = service['id']
|
||||
mocker.patch('app.service_api_client.get_service', return_value={'data': service})
|
||||
login_user(user, remember=True)
|
||||
|
||||
def login_fresh(self):
|
||||
|
||||
@@ -6,14 +6,14 @@ from tests import validate_route_permission
|
||||
|
||||
|
||||
def test_should_show_empty_api_keys_page(app_,
|
||||
api_user_active,
|
||||
api_user_pending,
|
||||
mock_login,
|
||||
mock_get_no_api_keys,
|
||||
mock_get_service,
|
||||
mock_has_permissions):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
client.login(api_user_pending)
|
||||
service_id = str(uuid.uuid4())
|
||||
response = client.get(url_for('main.api_keys', service_id=service_id))
|
||||
|
||||
|
||||
@@ -421,8 +421,13 @@ def test_service_dashboard_updates_gets_dashboard_totals(mocker,
|
||||
app_,
|
||||
active_user_with_permissions,
|
||||
service_one,
|
||||
mock_get_user,
|
||||
mock_get_service_templates,
|
||||
mock_get_template_statistics,
|
||||
mock_get_jobs,
|
||||
mock_get_service_statistics,
|
||||
mock_get_usage):
|
||||
mock_get_usage,
|
||||
mock_get_detailed_service):
|
||||
dashboard_totals = mocker.patch('app.main.views.dashboard.get_dashboard_totals', return_value={
|
||||
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
|
||||
'sms': {'requested': 0, 'delivered': 0, 'failed': 0}
|
||||
|
||||
@@ -55,20 +55,30 @@ def fake_uuid():
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_get_service(mocker, api_user_active):
|
||||
def _get(service_id, detailed=False):
|
||||
def _get(service_id):
|
||||
service = service_json(
|
||||
service_id, "Test Service", [api_user_active.id], message_limit=1000,
|
||||
active=False, restricted=True)
|
||||
if detailed:
|
||||
service['statistics'] = {
|
||||
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
|
||||
'sms': {'requested': 0, 'delivered': 0, 'failed': 0}
|
||||
}
|
||||
return {'data': service}
|
||||
|
||||
return mocker.patch('app.service_api_client.get_service', side_effect=_get)
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_get_detailed_service(mocker, api_user_active):
|
||||
def _get(service_id):
|
||||
service = service_json(
|
||||
service_id, "Test Service", [api_user_active.id], message_limit=1000,
|
||||
active=False, restricted=True)
|
||||
service['statistics'] = {
|
||||
'email': {'requested': 0, 'delivered': 0, 'failed': 0},
|
||||
'sms': {'requested': 0, 'delivered': 0, 'failed': 0}
|
||||
}
|
||||
return {'data': service}
|
||||
|
||||
return mocker.patch('app.service_api_client.get_detailed_service', side_effect=_get)
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_get_live_service(mocker, api_user_active):
|
||||
def _get(service_id):
|
||||
|
||||
Reference in New Issue
Block a user