Skip to content

Commit

Permalink
Test reference datatype validate and clean methods, #10552
Browse files Browse the repository at this point in the history
  • Loading branch information
chiatt committed Feb 8, 2024
1 parent b478c4b commit 4e71fbd
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions tests/utils/datatype_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,84 @@ def test_tile_clean(self):
string.clean(tile2, nodeid)

self.assertIsNotNone(tile2.data[nodeid])


class ReferenceDataTypeTests(ArchesTestCase):
def test_validate(self):
reference = DataTypeFactory().get_instance("reference")

for value in [
"",
[],
[{}], # reference has no 'uri'
[{"uri":""}], # reference uri is empty
]:
errors = reference.validate(value="")
self.assertIsNotNone(errors)

data = {
"uri": "https://www.domain.com/label",
"labels": [
{
"id": "23b4efbd-2e46-4b3f-8d75-2f3b2bb96af2",
"value": "label",
"language": "en",
"valuetype": "prefLabel"
},
{
"id": "e8676242-f0c7-4e3d-b031-fded4960cd86",
"language": "de",
"valuetype": "prefLabel"
}
]
}

errors = reference.validate(value=[data]) # label missing value property
self.assertIsNotNone(errors)

data["labels"][1]["value"] = "a label"
data["labels"][1]["language"] = "en"

errors = reference.validate(value=[data]) # too many prefLabels per language
self.assertIsNotNone(errors)

data["labels"][1]["value"] = "ein label"
data["labels"][1]["language"] = "de"

errors = reference.validate(value=[data]) # data should be valid
self.assertTrue(len(errors) == 0)

def test_tile_clean(self):
reference = DataTypeFactory().get_instance("reference")
nodeid = "72048cb3-adbc-11e6-9ccf-14109fd34195"
resourceinstanceid = "40000000-0000-0000-0000-000000000000"
data = [
{
"uri": "https://www.domain.com/label",
"labels": [
{
"id": "23b4efbd-2e46-4b3f-8d75-2f3b2bb96af2",
"value": "label",
"language": "en",
"valuetype": "prefLabel"
},
],
"listid": "fd9508dc-2aab-4c46-85ae-dccce1200035"
}
]

tile_info = {
"resourceinstance_id": resourceinstanceid,
"parenttile_id": "",
"nodegroup_id": nodeid,
"tileid": "",
"data": {nodeid: {"en": data}},
}

tile1 = Tile(tile_info)
reference.clean(tile1, nodeid)
self.assertIsNotNone(tile1.data[nodeid])

tile1.data[nodeid] = []
reference.clean(tile1, nodeid)
self.assertIsNone(tile1.data[nodeid])

0 comments on commit 4e71fbd

Please sign in to comment.