Skip to content

Commit 3fe0086

Browse files
committed
NRL-476 add unit tests for if trying to create or update status with non current value
1 parent 5a560d5 commit 3fe0086

File tree

3 files changed

+144
-0
lines changed

3 files changed

+144
-0
lines changed

api/producer/createDocumentReference/tests/test_create_document_reference.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,54 @@ def test_create_document_reference_invalid_category_type():
472472
}
473473

474474

475+
@mock_aws
476+
@mock_repository
477+
def test_create_document_reference_cannot_set_status_to_not_current(repository):
478+
doc_ref = load_document_reference("Y05868-736253002-Valid")
479+
doc_pointer = DocumentPointer.from_document_reference(doc_ref)
480+
repository.create(doc_pointer)
481+
482+
doc_ref.status = "somethingElse"
483+
484+
event = create_test_api_gateway_event(
485+
headers=create_headers(),
486+
path_parameters={"id": "Y05868-99999-99999-999999"},
487+
body=doc_ref.model_dump_json(exclude_none=True),
488+
)
489+
490+
result = handler(event, create_mock_context())
491+
492+
body = result.pop("body")
493+
494+
assert result == {
495+
"statusCode": "400",
496+
"headers": default_response_headers(),
497+
"isBase64Encoded": False,
498+
}
499+
parsed_body = json.loads(body)
500+
501+
assert parsed_body == {
502+
"resourceType": "OperationOutcome",
503+
"issue": [
504+
{
505+
"severity": "error",
506+
"code": "invalid",
507+
"details": {
508+
"coding": [
509+
{
510+
"code": "MESSAGE_NOT_WELL_FORMED",
511+
"display": "Message not well formed",
512+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
513+
}
514+
]
515+
},
516+
"diagnostics": "Request body could not be parsed (status: String should match pattern '^current$')",
517+
"expression": ["status"],
518+
}
519+
],
520+
}
521+
522+
475523
def test_create_document_reference_no_relatesto_target():
476524
doc_ref = load_document_reference("Y05868-736253002-Valid")
477525
doc_ref.relatesTo = [

api/producer/updateDocumentReference/tests/test_update_document_reference.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,54 @@ def test_update_document_reference_immutable_fields(repository):
533533
}
534534

535535

536+
@mock_aws
537+
@mock_repository
538+
def test_update_document_reference_cannot_change_status_to_not_current(repository):
539+
doc_ref = load_document_reference("Y05868-736253002-Valid")
540+
doc_pointer = DocumentPointer.from_document_reference(doc_ref)
541+
repository.create(doc_pointer)
542+
543+
doc_ref.status = "somethingElse"
544+
545+
event = create_test_api_gateway_event(
546+
headers=create_headers(),
547+
path_parameters={"id": "Y05868-99999-99999-999999"},
548+
body=doc_ref.model_dump_json(exclude_none=True),
549+
)
550+
551+
result = handler(event, create_mock_context())
552+
553+
body = result.pop("body")
554+
555+
assert result == {
556+
"statusCode": "400",
557+
"headers": default_response_headers(),
558+
"isBase64Encoded": False,
559+
}
560+
parsed_body = json.loads(body)
561+
562+
assert parsed_body == {
563+
"resourceType": "OperationOutcome",
564+
"issue": [
565+
{
566+
"severity": "error",
567+
"code": "invalid",
568+
"details": {
569+
"coding": [
570+
{
571+
"code": "MESSAGE_NOT_WELL_FORMED",
572+
"display": "Message not well formed",
573+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
574+
}
575+
]
576+
},
577+
"diagnostics": "Request body could not be parsed (status: String should match pattern '^current$')",
578+
"expression": ["status"],
579+
}
580+
],
581+
}
582+
583+
536584
@mock_aws
537585
@mock_repository
538586
def test_update_document_reference_with_no_context_related_for_ssp_url(repository):

api/producer/upsertDocumentReference/tests/test_upsert_document_reference.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,54 @@ def test_upsert_document_reference_happy_path_with_ssp(
145145
}
146146

147147

148+
@mock_aws
149+
@mock_repository
150+
def test_upsert_document_reference_cannot_set_status_to_not_current(repository):
151+
doc_ref = load_document_reference("Y05868-736253002-Valid")
152+
doc_pointer = DocumentPointer.from_document_reference(doc_ref)
153+
repository.create(doc_pointer)
154+
155+
doc_ref.status = "somethingElse"
156+
157+
event = create_test_api_gateway_event(
158+
headers=create_headers(),
159+
path_parameters={"id": "Y05868-99999-99999-999999"},
160+
body=doc_ref.model_dump_json(exclude_none=True),
161+
)
162+
163+
result = handler(event, create_mock_context())
164+
165+
body = result.pop("body")
166+
167+
assert result == {
168+
"statusCode": "400",
169+
"headers": default_response_headers(),
170+
"isBase64Encoded": False,
171+
}
172+
parsed_body = json.loads(body)
173+
174+
assert parsed_body == {
175+
"resourceType": "OperationOutcome",
176+
"issue": [
177+
{
178+
"severity": "error",
179+
"code": "invalid",
180+
"details": {
181+
"coding": [
182+
{
183+
"code": "MESSAGE_NOT_WELL_FORMED",
184+
"display": "Message not well formed",
185+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
186+
}
187+
]
188+
},
189+
"diagnostics": "Request body could not be parsed (status: String should match pattern '^current$')",
190+
"expression": ["status"],
191+
}
192+
],
193+
}
194+
195+
148196
def test_upsert_document_reference_invalid_category_type():
149197
doc_ref = load_document_reference("Y05868-736253002-Valid")
150198

0 commit comments

Comments
 (0)