From be97edce7f42f927c07c4341b97cd00f8c3e9643 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Wed, 5 Oct 2016 09:52:31 +0100 Subject: [PATCH] make add_rate_to_jobs singular there was no reason for it to operate on a whole list at a time --- app/notify_client/job_api_client.py | 4 +++- app/statistics_utils.py | 6 +++--- tests/app/test_statistics_utils.py | 31 +++++++++++++++++++---------- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/app/notify_client/job_api_client.py b/app/notify_client/job_api_client.py index b9d78f377..e04d18937 100644 --- a/app/notify_client/job_api_client.py +++ b/app/notify_client/job_api_client.py @@ -38,10 +38,12 @@ class JobApiClient(BaseAPIClient): return job - def get_jobs(self, service_id, limit_days=None): + def get_jobs(self, service_id, limit_days=None, statuses=None): params = {} if limit_days is not None: params['limit_days'] = limit_days + if statuses is not None: + params['statuses'] = ','.join(statuses) jobs = self.get(url='/service/{}/job'.format(service_id), params=params) for job in jobs['data']: diff --git a/app/statistics_utils.py b/app/statistics_utils.py index 1902c6d6d..c9a08992e 100644 --- a/app/statistics_utils.py +++ b/app/statistics_utils.py @@ -81,8 +81,8 @@ def get_failure_rate_for_job(job): ) -def add_rate_to_jobs(jobs): - return [dict( +def add_rate_to_job(job): + return dict( failure_rate=(get_failure_rate_for_job(job)) * 100, **job - ) for job in jobs] + ) diff --git a/tests/app/test_statistics_utils.py b/tests/app/test_statistics_utils.py index cb6b27db8..167ca8b15 100644 --- a/tests/app/test_statistics_utils.py +++ b/tests/app/test_statistics_utils.py @@ -1,6 +1,6 @@ import pytest -from app.statistics_utils import sum_of_statistics, add_rates_to, add_rate_to_jobs, statistics_by_state +from app.statistics_utils import sum_of_statistics, add_rates_to, add_rate_to_job, statistics_by_state @pytest.mark.parametrize('delivery_statistics', [ @@ -118,20 +118,29 @@ def test_service_statistics_by_state(): @pytest.mark.parametrize('failed, delivered, expected_failure_rate', [ (0, 0, 0), (0, 1, 0), + (1, 1, 50), (1, 0, 100), (1, 4, 20) ]) -def test_add_rate_to_jobs(failed, delivered, expected_failure_rate): - resp = add_rate_to_jobs([ +def test_add_rate_to_job_calculates_rate(failed, delivered, expected_failure_rate): + resp = add_rate_to_job( { 'notifications_failed': failed, - 'notifications_delivered': delivered - }, - { - 'notifications_failed': 1, - 'notifications_delivered': 1 + 'notifications_delivered': delivered, + 'id': 'foo' } - ]) + ) - assert resp[0]['failure_rate'] == expected_failure_rate - assert resp[1]['failure_rate'] == 50 + assert resp['failure_rate'] == expected_failure_rate + + +def test_add_rate_to_job_preserves_initial_fields(): + resp = add_rate_to_job( + { + 'notifications_failed': 0, + 'notifications_delivered': 0, + 'id': 'foo' + } + ) + + assert set(resp.keys()) == {'notifications_failed', 'notifications_delivered', 'id', 'failure_rate'}