Sort broadcasts by start time

For emails and text messages we sort by the time the user (or API) sent
them.

This makes sense for broadcasts too, since most users will receive the
alert within seconds of it being broadcast.

For alerts that haven’t started yet we can sort by `updated_at`, which
is when the user preparing the broadcast submitted it for approval.
This commit is contained in:
Chris Hill-Scott
2020-10-16 09:02:35 +01:00
parent 74e92e708e
commit e2e04b51fc
4 changed files with 49 additions and 10 deletions

View File

@@ -649,10 +649,12 @@ def broadcast_message_json(
starts_at=None,
finishes_at=None,
cancelled_at=None,
updated_at=None,
approved_by_id=None,
cancelled_by_id=None,
areas=None,
content=None,
template_name='Example template',
):
return {
'id': id_,
@@ -661,7 +663,7 @@ def broadcast_message_json(
'template_id': template_id,
'template_version': 123,
'template_name': 'Example template',
'template_name': template_name,
'content': content or 'This is a test',
'personalisation': {},
@@ -677,7 +679,7 @@ def broadcast_message_json(
'created_at': None,
'approved_at': None,
'cancelled_at': cancelled_at,
'updated_at': None,
'updated_at': updated_at,
'created_by_id': created_by_id,
'approved_by_id': approved_by_id,

View File

@@ -305,8 +305,10 @@ def test_broadcast_dashboard(
assert [
normalize_spaces(row.text) for row in page.select('table')[0].select('tbody tr')
] == [
'Half an hour ago This is a test England Scotland Waiting for approval',
'Hour and a half ago This is a test England Scotland Waiting for approval',
'Example template This is a test England Scotland Live since today at 2:20am',
'Example template This is a test England Scotland Waiting for approval',
'Example template This is a test England Scotland Live since today at 1:20am',
]
@@ -353,8 +355,8 @@ def test_previous_broadcasts_page(
assert [
normalize_spaces(row.text) for row in page.select('table')[0].select('tbody tr')
] == [
'Example template This is a test England Scotland Broadcast yesterday at 2:20am',
'Example template This is a test England Scotland Broadcast yesterday at 2:20pm',
'Example template This is a test England Scotland Broadcast yesterday at 2:20am',
]

View File

@@ -4309,21 +4309,39 @@ def mock_get_broadcast_messages(
def _get(service_id):
partial_json = partial(
broadcast_message_json,
id_=fake_uuid,
service_id=service_id,
template_id=fake_uuid,
created_by_id=fake_uuid,
)
return [
partial_json(
id_=uuid4(),
status='draft',
),
partial_json(
id_=uuid4(),
status='pending-approval',
updated_at=(
datetime.utcnow() - timedelta(minutes=30)
).isoformat(),
template_name='Half an hour ago',
finishes_at=None,
),
partial_json(
id_=uuid4(),
status='pending-approval',
updated_at=(
datetime.utcnow() - timedelta(hours=1, minutes=30)
).isoformat(),
template_name='Hour and a half ago',
finishes_at=None,
),
partial_json(
id_=uuid4(),
status='broadcasting',
updated_at=(
datetime.utcnow()
).isoformat(),
starts_at=(
datetime.utcnow()
).isoformat(),
@@ -4332,6 +4350,20 @@ def mock_get_broadcast_messages(
).isoformat(),
),
partial_json(
id_=uuid4(),
status='broadcasting',
updated_at=(
datetime.utcnow() - timedelta(hours=1)
).isoformat(),
starts_at=(
datetime.utcnow() - timedelta(hours=1)
).isoformat(),
finishes_at=(
datetime.utcnow() + timedelta(hours=24)
).isoformat(),
),
partial_json(
id_=uuid4(),
status='completed',
starts_at=(
datetime.utcnow() - timedelta(hours=12)
@@ -4341,6 +4373,7 @@ def mock_get_broadcast_messages(
).isoformat(),
),
partial_json(
id_=uuid4(),
status='cancelled',
starts_at=(
datetime.utcnow() - timedelta(days=1)