Skip to content

Commit fafff0e

Browse files
committed
NRL-1285 tests and update to validate certain classes
1 parent a647702 commit fafff0e

File tree

6 files changed

+47
-161
lines changed

6 files changed

+47
-161
lines changed

api/producer/createDocumentReference/tests/test_create_document_reference.py

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ def test_create_document_reference_invalid_body():
387387
def test_create_document_reference_empty_fields_in_body():
388388
doc_ref = load_document_reference("Y05868-736253002-Valid")
389389
doc_ref.author = []
390-
doc_ref.context = {"practiceSetting": {}, "sourcePatientInfo": None}
390+
doc_ref.custodian = {"identifier": {}, "reference": None}
391391
doc_ref.category = [{"coding": [{"system": "", "code": None}]}]
392392
doc_ref.text = ""
393393

@@ -421,7 +421,7 @@ def test_create_document_reference_empty_fields_in_body():
421421
}
422422
],
423423
},
424-
"diagnostics": "Request body could not be parsed (root: Value error, The following fields are empty: text, author, context.sourcePatientInfo, category[0].coding[0].system, category[0].coding[0].code)",
424+
"diagnostics": "Request body could not be parsed (root: Value error, The following fields are empty: text, author, custodian.reference, category[0].coding[0].system, category[0].coding[0].code)",
425425
"expression": ["root"],
426426
}
427427
],
@@ -825,9 +825,7 @@ def test_create_document_reference_cannot_set_status_to_not_current(repository):
825825
def test_create_document_reference_no_relatesto_target():
826826
doc_ref = load_document_reference("Y05868-736253002-Valid")
827827
doc_ref.relatesTo = [
828-
DocumentReferenceRelatesTo(
829-
code="transforms", target=Reference(reference=None, identifier=None)
830-
)
828+
DocumentReferenceRelatesTo(code="transforms", target=Reference())
831829
]
832830

833831
event = create_test_api_gateway_event(
@@ -873,9 +871,7 @@ def test_create_document_reference_invalid_relatesto_target_producer_id():
873871
doc_ref.relatesTo = [
874872
DocumentReferenceRelatesTo(
875873
code="transforms",
876-
target=Reference(
877-
reference=None, identifier=Identifier(value="X26-99999-99999-999999")
878-
),
874+
target=Reference(identifier=Identifier(value="X26-99999-99999-999999")),
879875
)
880876
]
881877

@@ -925,7 +921,6 @@ def test_create_document_reference_invalid_relatesto_not_exists(repository):
925921
DocumentReferenceRelatesTo(
926922
code="transforms",
927923
target=Reference(
928-
reference=None,
929924
identifier=Identifier(value="Y05868-123456-123456-123456"),
930925
),
931926
)
@@ -986,9 +981,7 @@ def test_create_document_reference_invalid_relatesto_nhs_number(
986981
doc_ref.relatesTo = [
987982
DocumentReferenceRelatesTo(
988983
code="transforms",
989-
target=Reference(
990-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
991-
),
984+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
992985
)
993986
]
994987

@@ -1048,9 +1041,7 @@ def test_create_document_reference_invalid_relatesto_type(
10481041
doc_ref.relatesTo = [
10491042
DocumentReferenceRelatesTo(
10501043
code="transforms",
1051-
target=Reference(
1052-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
1053-
),
1044+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
10541045
)
10551046
]
10561047

@@ -1264,9 +1255,7 @@ def test_create_document_reference_supersede_deletes_old_pointers_replace(
12641255
doc_ref.relatesTo = [
12651256
DocumentReferenceRelatesTo(
12661257
code="replaces",
1267-
target=Reference(
1268-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
1269-
),
1258+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
12701259
)
12711260
]
12721261

@@ -1325,9 +1314,7 @@ def test_create_document_reference_supersede_succeeds_with_toggle(
13251314
doc_ref.relatesTo = [
13261315
DocumentReferenceRelatesTo(
13271316
code="replaces",
1328-
target=Reference(
1329-
reference=None, identifier=Identifier(value="Y05868-99999-99999-000000")
1330-
),
1317+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-000000")),
13311318
)
13321319
]
13331320

@@ -1385,9 +1372,7 @@ def test_create_document_reference_supersede_fails_without_toggle(
13851372
doc_ref.relatesTo = [
13861373
DocumentReferenceRelatesTo(
13871374
code="replaces",
1388-
target=Reference(
1389-
reference=None, identifier=Identifier(value="Y05868-99999-99999-000000")
1390-
),
1375+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-000000")),
13911376
)
13921377
]
13931378

@@ -1444,9 +1429,7 @@ def test_create_document_reference_create_relatesto_not_replaces(
14441429
doc_ref.relatesTo = [
14451430
DocumentReferenceRelatesTo(
14461431
code="transforms",
1447-
target=Reference(
1448-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
1449-
),
1432+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
14501433
)
14511434
]
14521435

api/producer/updateDocumentReference/tests/test_update_document_reference.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def test_update_document_reference_happy_path(repository: DocumentPointerReposit
4040
event = create_test_api_gateway_event(
4141
headers=create_headers(),
4242
path_parameters={"id": "Y05868-99999-99999-999999"},
43-
body=doc_ref.model_dump_json(),
43+
body=doc_ref.model_dump_json(exclude_none=True),
4444
)
4545

4646
result = handler(event, create_mock_context())
@@ -109,7 +109,7 @@ def test_update_document_reference_happy_path_with_ssp(
109109
event = create_test_api_gateway_event(
110110
headers=create_headers(),
111111
path_parameters={"id": "Y05868-99999-99999-999999"},
112-
body=doc_ref.model_dump_json(),
112+
body=doc_ref.model_dump_json(exclude_none=True),
113113
)
114114

115115
result = handler(event, create_mock_context())
@@ -580,18 +580,13 @@ def test_update_document_reference_immutable_fields(repository):
580580
repository.create(doc_pointer)
581581

582582
doc_ref.type = CodeableConcept(
583-
id=None,
584583
coding=[
585584
Coding(
586-
id=None,
587585
system="http://snomed.info/sct",
588-
version=None,
589586
code="861421000000109",
590587
display="End of life care coordination summary",
591-
userSelected=None,
592588
)
593589
],
594-
text=None,
595590
)
596591

597592
event = create_test_api_gateway_event(
@@ -861,7 +856,7 @@ def test_update_document_reference_with_meta_lastupdated_ignored(
861856
event = create_test_api_gateway_event(
862857
headers=create_headers(),
863858
path_parameters={"id": "Y05868-99999-99999-999999"},
864-
body=doc_ref.model_dump_json(),
859+
body=doc_ref.model_dump_json(exclude_none=True),
865860
)
866861

867862
result = handler(event, create_mock_context())
@@ -931,7 +926,7 @@ def test_update_document_reference_with_invalid_date_ignored(
931926
event = create_test_api_gateway_event(
932927
headers=create_headers(),
933928
path_parameters={"id": "Y05868-99999-99999-999999"},
934-
body=doc_ref.model_dump_json(),
929+
body=doc_ref.model_dump_json(exclude_none=True),
935930
)
936931

937932
result = handler(event, create_mock_context())

api/producer/upsertDocumentReference/tests/test_upsert_document_reference.py

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -748,9 +748,7 @@ def test_upsert_document_reference_pointer_type_not_allowed(
748748
def test_upsert_document_reference_no_relatesto_target():
749749
doc_ref = load_document_reference("Y05868-736253002-Valid")
750750
doc_ref.relatesTo = [
751-
DocumentReferenceRelatesTo(
752-
code="transforms", target=Reference(reference=None, identifier=None)
753-
)
751+
DocumentReferenceRelatesTo(code="transforms", target=Reference())
754752
]
755753

756754
event = create_test_api_gateway_event(
@@ -796,9 +794,7 @@ def test_upsert_document_reference_invalid_relatesto_target_producer_id():
796794
doc_ref.relatesTo = [
797795
DocumentReferenceRelatesTo(
798796
code="transforms",
799-
target=Reference(
800-
reference=None, identifier=Identifier(value="X26-99999-99999-999999")
801-
),
797+
target=Reference(identifier=Identifier(value="X26-99999-99999-999999")),
802798
)
803799
]
804800

@@ -848,7 +844,6 @@ def test_upsert_document_reference_invalid_relatesto_not_exists(repository):
848844
DocumentReferenceRelatesTo(
849845
code="transforms",
850846
target=Reference(
851-
reference=None,
852847
identifier=Identifier(value="Y05868-99999-99999-999999"),
853848
),
854849
)
@@ -902,7 +897,6 @@ def test_upsert_document_reference_invalid_relatesto_not_exists_still_creates_wi
902897
DocumentReferenceRelatesTo(
903898
code="transforms",
904899
target=Reference(
905-
reference=None,
906900
identifier=Identifier(value="Y05868-99999-99999-999999"),
907901
),
908902
)
@@ -967,9 +961,7 @@ def test_upsert_document_reference_invalid_relatesto_nhs_number(
967961
doc_ref.relatesTo = [
968962
DocumentReferenceRelatesTo(
969963
code="transforms",
970-
target=Reference(
971-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
972-
),
964+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
973965
)
974966
]
975967

@@ -1029,9 +1021,7 @@ def test_upsert_document_reference_invalid_relatesto_type(
10291021
doc_ref.relatesTo = [
10301022
DocumentReferenceRelatesTo(
10311023
code="transforms",
1032-
target=Reference(
1033-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
1034-
),
1024+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
10351025
)
10361026
]
10371027

@@ -1244,9 +1234,7 @@ def test_upsert_document_reference_supersede_deletes_old_pointers_replace(
12441234
doc_ref.relatesTo = [
12451235
DocumentReferenceRelatesTo(
12461236
code="replaces",
1247-
target=Reference(
1248-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
1249-
),
1237+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
12501238
)
12511239
]
12521240

@@ -1304,9 +1292,7 @@ def test_upsert_document_reference_supersede_succeeds_with_toggle(
13041292
doc_ref.relatesTo = [
13051293
DocumentReferenceRelatesTo(
13061294
code="replaces",
1307-
target=Reference(
1308-
reference=None, identifier=Identifier(value="Y05868-99999-99999-000000")
1309-
),
1295+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-000000")),
13101296
)
13111297
]
13121298

@@ -1364,9 +1350,7 @@ def test_upsert_document_reference_supersede_fails_without_toggle(
13641350
doc_ref.relatesTo = [
13651351
DocumentReferenceRelatesTo(
13661352
code="replaces",
1367-
target=Reference(
1368-
reference=None, identifier=Identifier(value="Y05868-99999-99999-000000")
1369-
),
1353+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-000000")),
13701354
)
13711355
]
13721356

@@ -1422,9 +1406,7 @@ def test_upsert_document_reference_create_relatesto_not_replaces(
14221406
doc_ref.relatesTo = [
14231407
DocumentReferenceRelatesTo(
14241408
code="transforms",
1425-
target=Reference(
1426-
reference=None, identifier=Identifier(value="Y05868-99999-99999-999999")
1427-
),
1409+
target=Reference(identifier=Identifier(value="Y05868-99999-99999-999999")),
14281410
)
14291411
]
14301412

layer/nrlf/core/parent_model.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,29 @@ def validate_empty_fields(cls, values):
8888
Iteratively check every field in the model for emptiness.
8989
If a field is empty, add it to the error list with its full location.
9090
"""
91+
allowed_classes = [
92+
"DocumentReference",
93+
"Meta",
94+
"Narrative",
95+
"Identifier",
96+
"NRLCodeableConcept",
97+
"NRLCoding",
98+
"Reference",
99+
"DocumentReferenceRelatesTo",
100+
"CodeableConcept",
101+
"Coding",
102+
"DocumentReferenceContent",
103+
"Attachment",
104+
"NRLFormatCode",
105+
"ContentStabilityExtension",
106+
"ContentStabilityExtensionValueCodeableConcept",
107+
"ContentStabilityExtensionCoding",
108+
"DocumentReferenceContext",
109+
"Period",
110+
]
111+
if cls.__name__ not in allowed_classes:
112+
return values
113+
91114
stack = [(None, values)]
92115
empty_fields = []
93116

0 commit comments

Comments
 (0)