Skip to content

Commit 5a46d45

Browse files
NRL-518 Remove tests no longer valid due to upstream pydantic validation
1 parent 202b4f7 commit 5a46d45

File tree

2 files changed

+122
-129
lines changed

2 files changed

+122
-129
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
from unittest.mock import Mock
2+
import pytest
3+
from nrlf.core.errors import ParseError
4+
from nrlf.core.validators import DocumentReferenceValidator
5+
from nrlf.tests.data import load_document_reference_json
6+
7+
def test_validate_content_missing_attachment():
8+
validator = DocumentReferenceValidator()
9+
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
10+
11+
document_ref_data["content"][0].pop("attachment")
12+
13+
with pytest.raises(ParseError) as error:
14+
validator.validate(document_ref_data)
15+
16+
exc = error.value
17+
assert len(exc.issues) == 1
18+
assert exc.issues[0].model_dump(exclude_none=True) == {
19+
"severity": "error",
20+
"code": "invalid",
21+
"details": {
22+
"coding": [
23+
{
24+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
25+
"code": "INVALID_RESOURCE",
26+
"display": "Invalid validation of resource",
27+
}
28+
]
29+
},
30+
"diagnostics": "Failed to parse DocumentReference resource (content.0.attachment: Field required)",
31+
"expression": ["content.0.attachment"],
32+
}
33+
34+
def test_validate_content_missing_content_type():
35+
validator = DocumentReferenceValidator()
36+
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
37+
38+
document_ref_data["content"][0]["attachment"].pop("contentType")
39+
40+
with pytest.raises(ParseError) as error:
41+
validator.validate(document_ref_data)
42+
43+
exc = error.value
44+
assert len(exc.issues) == 1
45+
assert exc.issues[0].model_dump(exclude_none=True) == {
46+
"severity": "error",
47+
"code": "invalid",
48+
"details": {
49+
"coding": [
50+
{
51+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
52+
"code": "INVALID_RESOURCE",
53+
"display": "Invalid validation of resource",
54+
}
55+
]
56+
},
57+
"diagnostics": "Failed to parse DocumentReference resource (content.0.attachment.contentType: Field required)",
58+
"expression": ["content.0.attachment.contentType"],
59+
}
60+
61+
def test_validate_content_invalid_content_type():
62+
validator = DocumentReferenceValidator()
63+
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
64+
65+
document_ref_data["content"][0]["attachment"]["contentType"] = "invalid/type"
66+
67+
with pytest.raises(ParseError) as error:
68+
validator.validate(document_ref_data)
69+
70+
exc = error.value
71+
assert len(exc.issues) == 1
72+
assert exc.issues[0].model_dump(exclude_none=True) == {
73+
"severity": "error",
74+
"code": "invalid",
75+
"details": {
76+
"coding": [
77+
{
78+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
79+
"code": "INVALID_RESOURCE",
80+
"display": "Invalid validation of resource",
81+
}
82+
]
83+
},
84+
"diagnostics": "Failed to parse DocumentReference resource (content.0.attachment.contentType: String should match pattern '^(application|audio|image|message|model|multipart|text|video)/[a-zA-Z0-9!#$&^_+.-]+(;[a-zA-Z0-9!#$&^_+.-]+=[a-zA-Z0-9!#$&^_+.-]+)*$')",
85+
"expression": ["content.0.attachment.contentType"],
86+
}

layer/nrlf/core/tests/test_validators.py

Lines changed: 36 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,135 +1523,42 @@ def test_validate_ssp_content_with_multiple_asids():
15231523
"expression": ["context.related"],
15241524
}
15251525

1526-
def test_validate_content_extension_invalid_code_and_display_mismatch():
1527-
validator = DocumentReferenceValidator()
1528-
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
1529-
1530-
document_ref_data["content"][0]["extension"][0] = {
1531-
"url": "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability",
1532-
"valueCodeableConcept": {
1533-
"coding": [
1534-
{
1535-
"system": "https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability",
1536-
"code": "static",
1537-
"display": "Dynamic",
1538-
}
1539-
]
1540-
},
1541-
}
1542-
1543-
result = validator.validate(document_ref_data)
1544-
1545-
assert result.is_valid is False
1546-
assert result.resource.id == "Y05868-99999-99999-999999"
1547-
assert len(result.issues) == 1
1548-
assert result.issues[0].model_dump(exclude_none=True) == {
1549-
"severity": "error",
1550-
"code": "value",
1551-
"details": {
1552-
"coding": [
1553-
{
1554-
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
1555-
"code": "INVALID_RESOURCE",
1556-
"display": "Invalid validation of resource",
1557-
}
1558-
]
1559-
},
1560-
"diagnostics": "Invalid content extension display: Dynamic Extension display must be the same as code either 'Static' or 'Dynamic'",
1561-
"expression": [
1562-
"content[0].extension[0].valueCodeableConcept.coding[0].display"
1563-
],
1564-
}
1565-
1566-
def test_validate_content_missing_attachment():
1567-
validator = DocumentReferenceValidator()
1568-
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
1569-
1570-
document_ref_data["content"][0].pop("attachment")
1571-
1572-
result = validator.validate(document_ref_data)
1573-
1574-
assert result.is_valid is False
1575-
assert len(result.issues) == 1
1576-
assert result.issues[0].model_dump(exclude_none=True) == {
1577-
"severity": "error",
1578-
"code": "required",
1579-
"details": {
1580-
"coding": [
1581-
{
1582-
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
1583-
"code": "INVALID_RESOURCE",
1584-
"display": "Invalid validation of resource",
1585-
}
1586-
]
1587-
},
1588-
"diagnostics": "Missing attachment in content",
1589-
"expression": ["content[0].attachment"],
1590-
}
1591-
1592-
def test_validate_content_missing_content_type():
1593-
validator = DocumentReferenceValidator()
1594-
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
1595-
1596-
document_ref_data["content"][0]["attachment"].pop("contentType")
1597-
1598-
result = validator.validate(document_ref_data)
1599-
1600-
assert result.is_valid is False
1601-
assert len(result.issues) == 1
1602-
assert result.issues[0].model_dump(exclude_none=True) == {
1603-
"severity": "error",
1604-
"code": "required",
1605-
"details": {
1606-
"coding": [
1607-
{
1608-
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
1609-
"code": "INVALID_RESOURCE",
1610-
"display": "Invalid validation of resource",
1611-
}
1612-
]
1613-
},
1614-
"diagnostics": "Missing contentType in content.attachment",
1615-
"expression": ["content[0].attachment.contentType"],
1616-
}
1617-
1618-
def test_validate_content_invalid_content_type():
1619-
validator = DocumentReferenceValidator()
1620-
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
1621-
1622-
document_ref_data["content"][0]["attachment"][
1623-
"contentType"
1624-
] = "invalid/type"
1625-
1626-
result = validator.validate(document_ref_data)
1627-
1628-
assert result.is_valid is False
1629-
assert len(result.issues) == 1
1630-
assert result.issues[0].model_dump(exclude_none=True) == {
1631-
"severity": "error",
1632-
"code": "value",
1633-
"details": {
1634-
"coding": [
1635-
{
1636-
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
1637-
"code": "INVALID_RESOURCE",
1638-
"display": "Invalid validation of resource",
1639-
}
1640-
]
1641-
},
1642-
"diagnostics": "Invalid contentType: invalid/type. Must be 'application/pdf' or 'text/html'",
1643-
"expression": ["content[0].attachment.contentType"],
1644-
}
1645-
1646-
def test_validate_content_valid_content_type():
1647-
validator = DocumentReferenceValidator()
1648-
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
1526+
def test_validate_content_extension_invalid_code_and_display_mismatch():
1527+
validator = DocumentReferenceValidator()
1528+
document_ref_data = load_document_reference_json("Y05868-736253002-Valid")
16491529

1650-
document_ref_data["content"][0]["attachment"][
1651-
"contentType"
1652-
] = "application/pdf"
1530+
document_ref_data["content"][0]["extension"][0] = {
1531+
"url": "https://fhir.nhs.uk/England/StructureDefinition/Extension-England-ContentStability",
1532+
"valueCodeableConcept": {
1533+
"coding": [
1534+
{
1535+
"system": "https://fhir.nhs.uk/England/CodeSystem/England-NRLContentStability",
1536+
"code": "static",
1537+
"display": "Dynamic",
1538+
}
1539+
]
1540+
},
1541+
}
16531542

1654-
result = validator.validate(document_ref_data)
1543+
result = validator.validate(document_ref_data)
16551544

1656-
assert result.is_valid is True
1657-
assert result.issues == []
1545+
assert result.is_valid is False
1546+
assert result.resource.id == "Y05868-99999-99999-999999"
1547+
assert len(result.issues) == 1
1548+
assert result.issues[0].model_dump(exclude_none=True) == {
1549+
"severity": "error",
1550+
"code": "value",
1551+
"details": {
1552+
"coding": [
1553+
{
1554+
"system": "https://fhir.nhs.uk/ValueSet/Spine-ErrorOrWarningCode-1",
1555+
"code": "INVALID_RESOURCE",
1556+
"display": "Invalid validation of resource",
1557+
}
1558+
]
1559+
},
1560+
"diagnostics": "Invalid content extension display: Dynamic Extension display must be the same as code either 'Static' or 'Dynamic'",
1561+
"expression": [
1562+
"content[0].extension[0].valueCodeableConcept.coding[0].display"
1563+
],
1564+
}

0 commit comments

Comments
 (0)