diff --git a/app/service/rest.py b/app/service/rest.py index 7aa823f80..2cc7dab90 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -310,3 +310,13 @@ def update_whitelist(service_id): else: dao_add_and_commit_whitelisted_contacts(whitelist_objs) return '', 204 + + +@service_blueprint.route('//billable-units') +def get_billable_unit_count(service_id): + try: + return jsonify(notifications_dao.get_notification_billable_unit_count_per_month( + service_id, int(request.args.get('year')) + )) + except TypeError: + return jsonify(result='error', message='No valid year provided'), 400 diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 179d9383a..69e382c4e 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -1300,3 +1300,27 @@ def test_get_detailed_services_only_includes_todays_notifications(notify_db, not 'email': {'delivered': 0, 'failed': 0, 'requested': 0}, 'sms': {'delivered': 0, 'failed': 0, 'requested': 2} } + + +@freeze_time('2012-12-12T12:00:01') +def test_get_notification_billable_unit_count(client, notify_db, notify_db_session): + notification = create_sample_notification(notify_db, notify_db_session) + response = client.get( + '/service/{}/billable-units?year=2012'.format(notification.service_id), + headers=[create_authorization_header(service_id=notification.service_id)] + ) + assert response.status_code == 200 + assert json.loads(response.get_data(as_text=True)) == { + 'December': 1 + } + + +def test_get_notification_billable_unit_count_missing_year(client, sample_service): + response = client.get( + '/service/{}/billable-units'.format(sample_service.id), + headers=[create_authorization_header(service_id=sample_service.id)] + ) + assert response.status_code == 400 + assert json.loads(response.get_data(as_text=True)) == { + 'message': 'No valid year provided', 'result': 'error' + }