Add missing tests for old format areas

This was (sort of) missed in [1], but it hasn't caused a problem
because the code to create/update broadcasts will populate areas
in the old ("areas") and the new ("ids") formats anyway [2].

However, we're about to remove create/update support code, so we
need to have something in place to cope with old and new format
data until we backfill old broadcasts with the new format [3].

[1]: https://github.com/alphagov/notifications-api/pull/3312
[2]: https://github.com/alphagov/notifications-api/pull/3312/files#diff-6be38b59e387630a0c6b8fc60312b7ba53ba9f36c54594fa5690646f286dd2b9R141
[3]: 9667433b7e
This commit is contained in:
Ben Thorner
2021-08-27 13:07:22 +01:00
parent 55f71fa12b
commit 194f54c38f
2 changed files with 27 additions and 7 deletions

View File

@@ -2339,7 +2339,7 @@ class BroadcastMessage(db.Model):
# TEMPORARY: while we repurpose "areas" # TEMPORARY: while we repurpose "areas"
areas_2 = dict(self.areas) areas_2 = dict(self.areas)
areas_2["simple_polygons"] = areas_2.get("simple_polygons", []) areas_2["simple_polygons"] = areas_2.get("simple_polygons", [])
areas_2["ids"] = areas_2.pop("areas", []) areas_2["ids"] = areas_2.pop("areas", areas_2.get("ids", []))
return { return {
'id': str(self.id), 'id': str(self.id),
@@ -2355,8 +2355,8 @@ class BroadcastMessage(db.Model):
# TEMPORARY: switch to this so we can repurpose "areas" # TEMPORARY: switch to this so we can repurpose "areas"
'areas_2': areas_2, 'areas_2': areas_2,
'areas': self.areas.get("areas", []), 'areas': areas_2["ids"],
'simple_polygons': self.areas.get("simple_polygons", []), 'simple_polygons': areas_2["simple_polygons"],
'status': self.status, 'status': self.status,

View File

@@ -19,7 +19,16 @@ from tests.app.db import (
) )
def test_get_broadcast_message(admin_request, sample_broadcast_service): # TEMPORARY: while we repurpose "areas"
@pytest.mark.parametrize("area_data", [
{"areas": ["place A", "region B"]},
{"ids": ["place A", "region B"]},
])
def test_get_broadcast_message(
area_data,
admin_request,
sample_broadcast_service
):
t = create_template( t = create_template(
sample_broadcast_service, sample_broadcast_service,
BROADCAST_TYPE, BROADCAST_TYPE,
@@ -28,7 +37,7 @@ def test_get_broadcast_message(admin_request, sample_broadcast_service):
bm = create_broadcast_message( bm = create_broadcast_message(
t, t,
areas={ areas={
"areas": ['place A', 'region B'], **area_data,
"simple_polygons": [[[50.1, 1.2], [50.12, 1.2], [50.13, 1.2]]], "simple_polygons": [[[50.1, 1.2], [50.12, 1.2], [50.13, 1.2]]],
}, },
personalisation={ personalisation={
@@ -51,16 +60,27 @@ def test_get_broadcast_message(admin_request, sample_broadcast_service):
assert response['created_at'] is not None assert response['created_at'] is not None
assert response['starts_at'] is None assert response['starts_at'] is None
assert response['areas'] == ['place A', 'region B'] assert response['areas'] == ['place A', 'region B']
assert response['simple_polygons'] == [[[50.1, 1.2], [50.12, 1.2], [50.13, 1.2]]]
assert response['areas_2']['ids'] == ['place A', 'region B'] assert response['areas_2']['ids'] == ['place A', 'region B']
assert response['areas_2']['simple_polygons'] == [[[50.1, 1.2], [50.12, 1.2], [50.13, 1.2]]]
assert response['personalisation'] == {'thing': 'test'} assert response['personalisation'] == {'thing': 'test'}
def test_get_broadcast_message_without_template(admin_request, sample_broadcast_service): # TEMPORARY: while we repurpose "areas"
@pytest.mark.parametrize("area_data", [
{"areas": ["place A", "region B"]},
{"ids": ["place A", "region B"]},
])
def test_get_broadcast_message_without_template(
area_data,
admin_request,
sample_broadcast_service
):
bm = create_broadcast_message( bm = create_broadcast_message(
service=sample_broadcast_service, service=sample_broadcast_service,
content='emergency broadcast content', content='emergency broadcast content',
areas={ areas={
"areas": ['place A', 'region B'], **area_data,
"simple_polygons": [[[50.1, 1.2], [50.12, 1.2], [50.13, 1.2]]], "simple_polygons": [[[50.1, 1.2], [50.12, 1.2], [50.13, 1.2]]],
}, },
) )