diff --git a/app/dao/broadcast_message_dao.py b/app/dao/broadcast_message_dao.py index 55d6829bf..5903f7fbe 100644 --- a/app/dao/broadcast_message_dao.py +++ b/app/dao/broadcast_message_dao.py @@ -1,5 +1,6 @@ import uuid from datetime import datetime + from sqlalchemy import desc from app import db @@ -12,7 +13,7 @@ from app.models import ( BroadcastProviderMessageNumber, BroadcastProviderMessageStatus, BroadcastStatusType, - ServiceBroadcastSettings + ServiceBroadcastSettings, ) diff --git a/app/v2/govuk_alerts/get_broadcasts.py b/app/v2/govuk_alerts/get_broadcasts.py index c307a6c8c..acf6da04a 100644 --- a/app/v2/govuk_alerts/get_broadcasts.py +++ b/app/v2/govuk_alerts/get_broadcasts.py @@ -1,10 +1,23 @@ from flask import jsonify from app.dao.broadcast_message_dao import dao_get_all_broadcast_messages +from app.utils import get_dt_string_or_none from app.v2.govuk_alerts import v2_govuk_alerts_blueprint @v2_govuk_alerts_blueprint.route('') def get_broadcasts(): - all_broadcasts = dao_get_all_broadcast_messages() - return jsonify(all_broadcasts) + broadcasts = dao_get_all_broadcast_messages() + broadcasts_dict = {"alerts": [{ + "id": broadcast.id, + "reference": broadcast.reference, + "channel": broadcast.channel, + "content": broadcast.content, + "areas": broadcast.areas, + "status": broadcast.status, + "starts_at": get_dt_string_or_none(broadcast.starts_at), + "finishes_at": get_dt_string_or_none(broadcast.finishes_at), + "approved_at": get_dt_string_or_none(broadcast.approved_at), + "cancelled_at": get_dt_string_or_none(broadcast.cancelled_at), + } for broadcast in broadcasts]} + return jsonify(broadcasts_dict), 200 diff --git a/tests/app/dao/test_broadcast_message_dao.py b/tests/app/dao/test_broadcast_message_dao.py index afbe4c879..fe4b4ebfa 100644 --- a/tests/app/dao/test_broadcast_message_dao.py +++ b/tests/app/dao/test_broadcast_message_dao.py @@ -5,9 +5,10 @@ from app.dao.broadcast_message_dao import ( dao_get_all_broadcast_messages, get_earlier_events_for_broadcast_event, ) -from app.dao.broadcast_service_dao import insert_or_update_service_broadcast_settings +from app.dao.broadcast_service_dao import ( + insert_or_update_service_broadcast_settings, +) from app.models import BROADCAST_TYPE, BroadcastEventMessageType - from tests.app.db import ( create_broadcast_event, create_broadcast_message, diff --git a/tests/app/v2/govuk_alerts/__init__.py b/tests/app/v2/govuk_alerts/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/app/v2/govuk_alerts/test_get_broadcasts.py b/tests/app/v2/govuk_alerts/test_get_broadcasts.py new file mode 100644 index 000000000..d0f62efdf --- /dev/null +++ b/tests/app/v2/govuk_alerts/test_get_broadcasts.py @@ -0,0 +1,39 @@ +from datetime import datetime + +from flask import current_app, json + +from app.models import BROADCAST_TYPE +from tests import create_internal_authorization_header +from tests.app.db import create_broadcast_message, create_template + + +def test_get_all_broadcasts_returns_list_of_broadcasts_and_200( + client, sample_broadcast_service +): + template_1 = create_template(sample_broadcast_service, BROADCAST_TYPE) + + broadcast_message_1 = create_broadcast_message( + template_1, + starts_at=datetime(2021, 6, 15, 12, 0, 0), + status='cancelled') + + broadcast_message_2 = create_broadcast_message( + template_1, + starts_at=datetime(2021, 6, 22, 12, 0, 0), + status='broadcasting') + + jwt_client_id = current_app.config['GOVUK_ALERTS_CLIENT_ID'] + header = create_internal_authorization_header(jwt_client_id) + + response = client.get('/v2/govuk-alerts', headers=[header]) + + json_response = json.loads(response.get_data(as_text=True)) + + assert response.status_code == 200 + assert len(json_response['alerts']) == 2 + + assert json_response['alerts'][0]['id'] == str(broadcast_message_2.id) + assert json_response['alerts'][0]['starts_at'] == '2021-06-22T12:00:00.000000Z' + assert json_response['alerts'][0]['finishes_at'] is None + assert json_response['alerts'][1]['id'] == str(broadcast_message_1.id) + assert json_response['alerts'][1]['starts_at'] == '2021-06-15T12:00:00.000000Z'