Skip to content

Commit 18293f0

Browse files
committed
[NDR-286] Update FHIR tests to have realistic return value
1 parent 2f1fa1a commit 18293f0

File tree

2 files changed

+64
-74
lines changed

2 files changed

+64
-74
lines changed

lambdas/handlers/fhir_document_reference_search_handler.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,9 @@ def lambda_handler(event: Dict[str, Any], context: Any) -> Dict[str, Any]:
6666
check_upload_completed=False,
6767
api_request_context=event.get("requestContext", {}),
6868
)
69-
if not document_references:
69+
70+
if document_references["total"] < 1:
7071
logger.info(f"No document references found for NHS number: {nhs_number}")
71-
return ApiGatewayResponse(
72-
404,
73-
LambdaError.DocumentReferenceNotFound.create_error_response().create_error_fhir_response(
74-
LambdaError.DocumentReferenceNotFound.value.get("fhir_coding")
75-
),
76-
"GET",
77-
).create_api_gateway_response()
7872
return ApiGatewayResponse(
7973
200, json.dumps(document_references), "GET"
8074
).create_api_gateway_response()

lambdas/tests/unit/handlers/test_fhir_document_reference_search_handler.py

Lines changed: 62 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,62 @@
1313
from utils.lambda_handler_utils import extract_bearer_token
1414

1515

16+
MOCK_DOCUMENT_REFERENCE_RESULT = {
17+
"entry": [
18+
{
19+
"resource": {
20+
"author": [
21+
{
22+
"identifier": {
23+
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
24+
"value": "H81109",
25+
}
26+
}
27+
],
28+
"content": [
29+
{
30+
"attachment": {
31+
"contentType": "application/pdf",
32+
"creation": "2023-01-01",
33+
"language": "en-GB",
34+
"title": "1of1_Lloyd_George_Record_[Holly Lorna MAGAN]_[9449305943]_[29-05-2006].pdf",
35+
}
36+
}
37+
],
38+
"custodian": {
39+
"identifier": {
40+
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
41+
"value": "H81109",
42+
}
43+
},
44+
"docStatus": "final",
45+
"meta": {"versionId": "1"},
46+
"resourceType": "DocumentReference",
47+
"status": "current",
48+
"subject": {
49+
"identifier": {
50+
"system": "https://fhir.nhs.uk/Id/nhs-number",
51+
"value": "9000000009",
52+
}
53+
},
54+
"type": {
55+
"coding": [
56+
{
57+
"code": "16521000000101",
58+
"display": "Lloyd George record folder",
59+
"system": "http://snomed.info/sct",
60+
}
61+
]
62+
},
63+
}
64+
}
65+
],
66+
"resourceType": "Bundle",
67+
"total": 1,
68+
"type": "searchset",
69+
}
70+
71+
1672
@pytest.fixture
1773
def valid_nhs_number_event():
1874
return {
@@ -130,68 +186,14 @@ def mock_dynamic_config_service():
130186
def test_lambda_handler_returns_200_with_documents(
131187
mock_document_reference_search_service, valid_nhs_number_event, context, set_env
132188
):
133-
mock_document_references = {
134-
"entry": [
135-
{
136-
"resource": {
137-
"author": [
138-
{
139-
"identifier": {
140-
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
141-
"value": "H81109",
142-
}
143-
}
144-
],
145-
"content": [
146-
{
147-
"attachment": {
148-
"contentType": "application/pdf",
149-
"creation": "2023-01-01",
150-
"language": "en-GB",
151-
"title": "1of1_Lloyd_George_Record_[Holly Lorna MAGAN]_[9449305943]_[29-05-2006].pdf",
152-
}
153-
}
154-
],
155-
"custodian": {
156-
"identifier": {
157-
"system": "https://fhir.nhs.uk/Id/ods-organization-code",
158-
"value": "H81109",
159-
}
160-
},
161-
"docStatus": "final",
162-
"meta": {"versionId": "1"},
163-
"resourceType": "DocumentReference",
164-
"status": "current",
165-
"subject": {
166-
"identifier": {
167-
"system": "https://fhir.nhs.uk/Id/nhs-number",
168-
"value": "9000000009",
169-
}
170-
},
171-
"type": {
172-
"coding": [
173-
{
174-
"code": "16521000000101",
175-
"display": "Lloyd George record folder",
176-
"system": "http://snomed.info/sct",
177-
}
178-
]
179-
},
180-
}
181-
}
182-
],
183-
"resourceType": "Bundle",
184-
"total": 1,
185-
"type": "searchset",
186-
}
187189
mock_document_reference_search_service.get_document_references.return_value = (
188-
mock_document_references
190+
MOCK_DOCUMENT_REFERENCE_RESULT
189191
)
190192

191193
response = lambda_handler(valid_nhs_number_event, context)
192194

193195
assert response["statusCode"] == 200
194-
assert json.loads(response["body"]) == mock_document_references
196+
assert json.loads(response["body"]) == MOCK_DOCUMENT_REFERENCE_RESULT
195197
mock_document_reference_search_service.get_document_references.assert_called_once_with(
196198
nhs_number="9000000009",
197199
return_fhir=True,
@@ -250,17 +252,14 @@ def test_lambda_handler_returns_400_for_missing_nhs_number(
250252
def test_lambda_handler_with_additional_filters(
251253
mock_document_reference_search_service, valid_event_with_filters, context, set_env
252254
):
253-
mock_document_references = [
254-
{"resourceType": "DocumentReference", "status": "current"},
255-
]
256255
mock_document_reference_search_service.get_document_references.return_value = (
257-
mock_document_references
256+
MOCK_DOCUMENT_REFERENCE_RESULT
258257
)
259258

260259
response = lambda_handler(valid_event_with_filters, context)
261260

262261
assert response["statusCode"] == 200
263-
assert json.loads(response["body"]) == mock_document_references
262+
assert json.loads(response["body"]) == MOCK_DOCUMENT_REFERENCE_RESULT
264263

265264
# Check that the filters were correctly parsed and passed
266265
expected_filters = {"file_type": "736253002", "custodian": "Y12345"}
@@ -283,11 +282,8 @@ def test_lambda_handler_with_auth_validation(
283282
set_env,
284283
):
285284
# Setup mocks
286-
mock_document_references = [
287-
{"resourceType": "DocumentReference", "status": "current"}
288-
]
289285
mock_document_reference_search_service.get_document_references.return_value = (
290-
mock_document_references
286+
MOCK_DOCUMENT_REFERENCE_RESULT
291287
)
292288

293289
# Mock successful authorisation
@@ -303,7 +299,7 @@ def test_lambda_handler_with_auth_validation(
303299
response = lambda_handler(valid_event_with_auth, context)
304300

305301
assert response["statusCode"] == 200
306-
assert json.loads(response["body"]) == mock_document_references
302+
assert json.loads(response["body"]) == MOCK_DOCUMENT_REFERENCE_RESULT
307303

308304
# Verify authorisation flow
309305
mock_dynamic_config_service.set_auth_ssm_prefix.assert_called_once()

0 commit comments

Comments
 (0)