mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-22 07:16:06 -04:00
Compare commits
1 Commits
add-second
...
broadcast-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c732fa44e |
@@ -7,6 +7,7 @@ def cap_xml_to_dict(cap_xml):
|
|||||||
return {
|
return {
|
||||||
"msgType": cap.alert.msgType.text,
|
"msgType": cap.alert.msgType.text,
|
||||||
"reference": cap.alert.identifier.text,
|
"reference": cap.alert.identifier.text,
|
||||||
|
"event": cap.alert.info.event.text,
|
||||||
"category": cap.alert.info.category.text,
|
"category": cap.alert.info.category.text,
|
||||||
"expires": cap.alert.info.expires.text,
|
"expires": cap.alert.info.expires.text,
|
||||||
"content": cap.alert.info.description.text,
|
"content": cap.alert.info.description.text,
|
||||||
|
|||||||
@@ -2319,6 +2319,7 @@ class BroadcastMessage(db.Model):
|
|||||||
api_key = db.relationship('ApiKey')
|
api_key = db.relationship('ApiKey')
|
||||||
|
|
||||||
reference = db.Column(db.String(255), nullable=True)
|
reference = db.Column(db.String(255), nullable=True)
|
||||||
|
event = db.Column(db.String(255), nullable=True)
|
||||||
|
|
||||||
stubbed = db.Column(db.Boolean, nullable=False)
|
stubbed = db.Column(db.Boolean, nullable=False)
|
||||||
|
|
||||||
@@ -2338,6 +2339,7 @@ class BroadcastMessage(db.Model):
|
|||||||
return {
|
return {
|
||||||
'id': str(self.id),
|
'id': str(self.id),
|
||||||
'reference': self.reference,
|
'reference': self.reference,
|
||||||
|
'event': self.event,
|
||||||
|
|
||||||
'service_id': str(self.service_id),
|
'service_id': str(self.service_id),
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ post_broadcast_schema = {
|
|||||||
"required": [
|
"required": [
|
||||||
"msgType",
|
"msgType",
|
||||||
"reference",
|
"reference",
|
||||||
|
"event",
|
||||||
"category",
|
"category",
|
||||||
"content",
|
"content",
|
||||||
"areas",
|
"areas",
|
||||||
@@ -16,6 +17,12 @@ post_broadcast_schema = {
|
|||||||
"null",
|
"null",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
"event": {
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"null",
|
||||||
|
],
|
||||||
|
},
|
||||||
"category": {
|
"category": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ def create_broadcast():
|
|||||||
service_id=authenticated_service.id,
|
service_id=authenticated_service.id,
|
||||||
content=broadcast_json['content'],
|
content=broadcast_json['content'],
|
||||||
reference=broadcast_json['reference'],
|
reference=broadcast_json['reference'],
|
||||||
|
event=broadcast_json['event'],
|
||||||
areas={
|
areas={
|
||||||
'names': [
|
'names': [
|
||||||
area['name'] for area in broadcast_json['areas']
|
area['name'] for area in broadcast_json['areas']
|
||||||
|
|||||||
21
migrations/versions/0362_broadcast_msg_event.py
Normal file
21
migrations/versions/0362_broadcast_msg_event.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
"""
|
||||||
|
|
||||||
|
Revision ID: 0362_broadcast_msg_event
|
||||||
|
Revises: 0361_new_user_bcast_permissions
|
||||||
|
Create Date: 2020-12-04 15:06:22.544803
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from sqlalchemy.dialects import postgresql
|
||||||
|
|
||||||
|
revision = '0362_broadcast_msg_event'
|
||||||
|
down_revision = '0361_new_user_bcast_permissions'
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.add_column('broadcast_message', sa.Column('event', sa.String(length=255), nullable=True))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_column('broadcast_message', 'event')
|
||||||
@@ -91,6 +91,26 @@ def test_get_broadcast_message_without_template(
|
|||||||
assert response['personalisation'] is None
|
assert response['personalisation'] is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_broadcast_message_with_event(
|
||||||
|
admin_request,
|
||||||
|
sample_broadcast_service
|
||||||
|
):
|
||||||
|
bm = create_broadcast_message(
|
||||||
|
service=sample_broadcast_service,
|
||||||
|
content='emergency broadcast content',
|
||||||
|
event='001 example event',
|
||||||
|
)
|
||||||
|
|
||||||
|
response = admin_request.get(
|
||||||
|
'broadcast_message.get_broadcast_message',
|
||||||
|
service_id=sample_broadcast_service.id,
|
||||||
|
broadcast_message_id=bm.id,
|
||||||
|
_expected_status=200
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response['event'] == '001 example event'
|
||||||
|
|
||||||
|
|
||||||
def test_get_broadcast_message_404s_if_message_doesnt_exist(admin_request, sample_broadcast_service):
|
def test_get_broadcast_message_404s_if_message_doesnt_exist(admin_request, sample_broadcast_service):
|
||||||
err = admin_request.get(
|
err = admin_request.get(
|
||||||
'broadcast_message.get_broadcast_message',
|
'broadcast_message.get_broadcast_message',
|
||||||
@@ -255,6 +275,7 @@ def test_create_broadcast_message_can_be_created_from_content(admin_request, sam
|
|||||||
assert response['content'] == 'Some content\n€ŷŵ~\n\'\'""---'
|
assert response['content'] == 'Some content\n€ŷŵ~\n\'\'""---'
|
||||||
assert response['reference'] == 'abc123'
|
assert response['reference'] == 'abc123'
|
||||||
assert response['template_id'] is None
|
assert response['template_id'] is None
|
||||||
|
assert response['event'] is None
|
||||||
|
|
||||||
|
|
||||||
def test_create_broadcast_message_400s_if_content_and_template_provided(
|
def test_create_broadcast_message_400s_if_content_and_template_provided(
|
||||||
|
|||||||
@@ -1119,7 +1119,8 @@ def create_broadcast_message(
|
|||||||
starts_at=None,
|
starts_at=None,
|
||||||
finishes_at=None,
|
finishes_at=None,
|
||||||
areas=None,
|
areas=None,
|
||||||
stubbed=False
|
stubbed=False,
|
||||||
|
event=None,
|
||||||
):
|
):
|
||||||
if template:
|
if template:
|
||||||
service = template.service
|
service = template.service
|
||||||
@@ -1148,7 +1149,8 @@ def create_broadcast_message(
|
|||||||
created_by_id=created_by.id if created_by else service.created_by_id,
|
created_by_id=created_by.id if created_by else service.created_by_id,
|
||||||
areas=areas or {'ids': [], 'simple_polygons': []},
|
areas=areas or {'ids': [], 'simple_polygons': []},
|
||||||
content=content,
|
content=content,
|
||||||
stubbed=stubbed
|
stubbed=stubbed,
|
||||||
|
event=event,
|
||||||
)
|
)
|
||||||
db.session.add(broadcast_message)
|
db.session.add(broadcast_message)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ def test_valid_post_cap_xml_broadcast_returns_201(
|
|||||||
'closely monitoring the situation throughout the night. '
|
'closely monitoring the situation throughout the night. '
|
||||||
)
|
)
|
||||||
assert response_json['reference'] == '50385fcb0ab7aa447bbd46d848ce8466E'
|
assert response_json['reference'] == '50385fcb0ab7aa447bbd46d848ce8466E'
|
||||||
|
assert response_json['event'] == '053/055 Issue Severe Flood Warning EA'
|
||||||
assert response_json['created_at'] # datetime generated by the DB so can’t freeze it
|
assert response_json['created_at'] # datetime generated by the DB so can’t freeze it
|
||||||
assert response_json['created_by_id'] is None
|
assert response_json['created_by_id'] is None
|
||||||
assert response_json['finishes_at'] is None
|
assert response_json['finishes_at'] is None
|
||||||
|
|||||||
Reference in New Issue
Block a user