Require reference if template not provided

In the admin app we need something to use in show in lieu of template
name when a template isn’t used. Let’s store this in the reference field
for now.
This commit is contained in:
Chris Hill-Scott
2021-01-15 14:43:40 +00:00
parent 0510311d63
commit e161f6e4a1
3 changed files with 69 additions and 4 deletions

View File

@@ -183,6 +183,7 @@ def test_create_broadcast_message_can_be_created_from_content(admin_request, sam
'broadcast_message.create_broadcast_message',
_data={
'content': 'Some tailor made broadcast content',
'reference': 'abc123',
'service_id': str(sample_broadcast_service.id),
'created_by': str(sample_broadcast_service.created_by_id),
},
@@ -190,6 +191,7 @@ def test_create_broadcast_message_can_be_created_from_content(admin_request, sam
_expected_status=201
)
assert response['content'] == 'Some tailor made broadcast content'
assert response['reference'] == 'abc123'
assert response['template_id'] is None
@@ -224,6 +226,60 @@ def test_create_broadcast_message_400s_if_content_and_template_provided(
'{required: [template_id]}'
) in response['errors'][0]['message']
def test_create_broadcast_message_400s_if_reference_and_template_provided(
admin_request,
sample_broadcast_service,
):
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
response = admin_request.post(
'broadcast_message.create_broadcast_message',
_data={
'template_id': str(template.id),
'reference': 'abc123',
'service_id': str(sample_broadcast_service.id),
'created_by': str(sample_broadcast_service.created_by_id),
},
service_id=sample_broadcast_service.id,
_expected_status=400
)
assert len(response['errors']) == 1
assert response['errors'][0]['error'] == 'ValidationError'
# The error message for oneOf is ugly, non-deterministic in ordering
# and contains some UUID, so lets just pick out the important bits
assert (
' is valid under each of '
) in response['errors'][0]['message']
assert (
'{required: [reference]}'
) in response['errors'][0]['message']
assert (
'{required: [template_id]}'
) in response['errors'][0]['message']
def test_create_broadcast_message_400s_if_reference_not_provided_with_content(
admin_request,
sample_broadcast_service,
):
response = admin_request.post(
'broadcast_message.create_broadcast_message',
_data={
'content': 'Some tailor made broadcast content',
'service_id': str(sample_broadcast_service.id),
'created_by': str(sample_broadcast_service.created_by_id),
},
service_id=sample_broadcast_service.id,
_expected_status=400
)
assert len(response['errors']) == 1
assert response['errors'][0]['error'] == 'ValidationError'
assert response['errors'][0]['message'].endswith(
'is not valid under any of the given schemas'
)
@pytest.mark.parametrize('status', [
BroadcastStatusType.DRAFT,
BroadcastStatusType.PENDING_APPROVAL,