mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 09:51:11 -05:00
get_broadcasts returns a list of broadcasts for gov.uk/alerts
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from sqlalchemy import desc
|
from sqlalchemy import desc
|
||||||
|
|
||||||
from app import db
|
from app import db
|
||||||
@@ -12,7 +13,7 @@ from app.models import (
|
|||||||
BroadcastProviderMessageNumber,
|
BroadcastProviderMessageNumber,
|
||||||
BroadcastProviderMessageStatus,
|
BroadcastProviderMessageStatus,
|
||||||
BroadcastStatusType,
|
BroadcastStatusType,
|
||||||
ServiceBroadcastSettings
|
ServiceBroadcastSettings,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,23 @@
|
|||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
|
|
||||||
from app.dao.broadcast_message_dao import dao_get_all_broadcast_messages
|
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
|
from app.v2.govuk_alerts import v2_govuk_alerts_blueprint
|
||||||
|
|
||||||
|
|
||||||
@v2_govuk_alerts_blueprint.route('')
|
@v2_govuk_alerts_blueprint.route('')
|
||||||
def get_broadcasts():
|
def get_broadcasts():
|
||||||
all_broadcasts = dao_get_all_broadcast_messages()
|
broadcasts = dao_get_all_broadcast_messages()
|
||||||
return jsonify(all_broadcasts)
|
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
|
||||||
|
|||||||
@@ -5,9 +5,10 @@ from app.dao.broadcast_message_dao import (
|
|||||||
dao_get_all_broadcast_messages,
|
dao_get_all_broadcast_messages,
|
||||||
get_earlier_events_for_broadcast_event,
|
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 app.models import BROADCAST_TYPE, BroadcastEventMessageType
|
||||||
|
|
||||||
from tests.app.db import (
|
from tests.app.db import (
|
||||||
create_broadcast_event,
|
create_broadcast_event,
|
||||||
create_broadcast_message,
|
create_broadcast_message,
|
||||||
|
|||||||
0
tests/app/v2/govuk_alerts/__init__.py
Normal file
0
tests/app/v2/govuk_alerts/__init__.py
Normal file
39
tests/app/v2/govuk_alerts/test_get_broadcasts.py
Normal file
39
tests/app/v2/govuk_alerts/test_get_broadcasts.py
Normal file
@@ -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'
|
||||||
Reference in New Issue
Block a user