mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-12 14:34:05 -05:00
We’ve changed our simplification a bit so: - polygons have slightly more points (see https://github.com/alphagov/notifications-utils/pull/873) - the individual points have less precision (see https://github.com/alphagov/notifications-utils/pull/872) Overall this reduces the size of the data we’re storing from 74MB to 63MB, and should make any pages where we are rendering lots of coordinates load a bit quicker.
71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
import pytest
|
|
|
|
from app.models.broadcast_message import BroadcastMessage
|
|
from tests import broadcast_message_json
|
|
|
|
|
|
def test_simple_polygons(fake_uuid):
|
|
broadcast_message = BroadcastMessage(broadcast_message_json(
|
|
id_=fake_uuid,
|
|
service_id=fake_uuid,
|
|
template_id=fake_uuid,
|
|
status='draft',
|
|
created_by_id=fake_uuid,
|
|
areas=[
|
|
# Hackney Central
|
|
'wd20-E05009372',
|
|
# Hackney Wick
|
|
'wd20-E05009374',
|
|
],
|
|
))
|
|
|
|
assert [
|
|
[
|
|
len(polygon)
|
|
for polygon in broadcast_message.polygons.as_coordinate_pairs_lat_long
|
|
],
|
|
[
|
|
len(polygon)
|
|
for polygon in broadcast_message.simple_polygons.as_coordinate_pairs_lat_long
|
|
],
|
|
] == [
|
|
# One polygon for each area
|
|
[27, 31],
|
|
# Because the areas are close to each other, the simplification
|
|
# and unioning process results in a single polygon with fewer
|
|
# total coordinates
|
|
[54],
|
|
]
|
|
|
|
|
|
def test_content_comes_from_attribute_not_template(fake_uuid):
|
|
broadcast_message = BroadcastMessage(broadcast_message_json(
|
|
id_=fake_uuid,
|
|
service_id=fake_uuid,
|
|
template_id=fake_uuid,
|
|
status='draft',
|
|
created_by_id=fake_uuid,
|
|
))
|
|
assert broadcast_message.content == 'This is a test'
|
|
|
|
|
|
def test_raises_for_missing_areas(fake_uuid):
|
|
broadcast_message = BroadcastMessage(broadcast_message_json(
|
|
id_=fake_uuid,
|
|
service_id=fake_uuid,
|
|
template_id=fake_uuid,
|
|
status='draft',
|
|
created_by_id=fake_uuid,
|
|
areas=[
|
|
'wd20-E05009372',
|
|
'something else',
|
|
],
|
|
))
|
|
|
|
with pytest.raises(RuntimeError) as exception:
|
|
broadcast_message.areas
|
|
|
|
assert str(exception.value) == (
|
|
'BroadcastMessage has 2 areas but 1 found in the library'
|
|
)
|