Skip to content

Commit

Permalink
test: unit test logic for nested required related fields #265
Browse files Browse the repository at this point in the history
  • Loading branch information
VKTB committed Jan 24, 2022
1 parent d606d6b commit e52d595
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions test/search_api/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,85 @@ def test_from_icat_technique_entity_with_data_for_all_related_entities(self):

assert technique_entity.dict(by_alias=True) == expected_entity_data

def test_from_icat_multiple_and_nested_relations(self):
expected_entity_data = DOCUMENT_PANOSC_DATA.copy()
expected_entity_data["keywords"] = []
expected_entity_data["datasets"] = [DATASET_PANOSC_DATA.copy()]
expected_entity_data["datasets"][0]["instrument"] = INSTRUMENT_PANOSC_DATA
expected_entity_data["datasets"][0]["files"] = [
FILE_PANOSC_DATA,
FILE_PANOSC_DATA,
]
expected_entity_data["datasets"][0]["parameters"] = [
PARAMETER_PANOSC_DATA.copy(),
]
expected_entity_data["datasets"][0]["parameters"][0][
"value"
] = DATASET_PARAMETER_ICAT_DATA["stringValue"]
expected_entity_data["datasets"][0]["samples"] = [SAMPLE_PANOSC_DATA.copy()]
expected_entity_data["datasets"][0]["samples"][0]["description"] = None
expected_entity_data["members"] = [MEMBER_PANOSC_DATA.copy()]
expected_entity_data["members"][0]["affiliation"] = AFFILIATION_PANOSC_DATA
expected_entity_data["members"][0]["person"] = PERSON_PANOSC_DATA
expected_entity_data["parameters"] = [PARAMETER_PANOSC_DATA.copy()]
expected_entity_data["parameters"][0]["value"]
expected_entity_data["parameters"][0]["dataset"] = DATASET_PANOSC_DATA.copy()
expected_entity_data["parameters"][0]["document"] = DOCUMENT_PANOSC_DATA.copy()
expected_entity_data["parameters"][0]["document"]["keywords"] = []
expected_entity_data["parameters"][0]["dataset"]["techniques"] = [
TECHNIQUE_PANOSC_DATA,
]

icat_data = INVESTIGATION_ICAT_DATA.copy()
icat_data["type"] = INVESTIGATION_TYPE_ICAT_DATA
icat_data["datasets"] = [DATASET_ICAT_DATA.copy()]
icat_data["datasets"][0]["datasetInstruments"] = [
{"instrument": INSTRUMENT_ICAT_DATA.copy()},
]
icat_data["datasets"][0]["datasetInstruments"][0]["instrument"][
"facility"
] = FACILITY_ICAT_DATA
icat_data["datasets"][0]["datafiles"] = [DATAFILE_ICAT_DATA, DATAFILE_ICAT_DATA]
icat_data["datasets"][0]["parameters"] = [DATASET_PARAMETER_ICAT_DATA.copy()]
icat_data["datasets"][0]["parameters"][0]["type"] = PARAMETER_TYPE_ICAT_DATA
icat_data["datasets"][0]["sample"] = SAMPLE_ICAT_DATA
icat_data["investigationUsers"] = [INVESTIGATION_USER_ICAT_DATA.copy()]
icat_data["investigationUsers"][0]["user"] = USER_ICAT_DATA.copy()
icat_data["investigationUsers"][0]["user"]["dataPublicationUsers"] = [
{"affiliations": [AFFILIATION_ICAT_DATA]},
]
icat_data["parameters"] = [INVESTIGATION_PARAMETER_ICAT_DATA.copy()]
icat_data["parameters"][0]["type"] = PARAMETER_TYPE_ICAT_DATA
icat_data["parameters"][0]["investigation"] = INVESTIGATION_ICAT_DATA.copy()
icat_data["parameters"][0]["investigation"][
"type"
] = INVESTIGATION_TYPE_ICAT_DATA
dataset_with_techniques_icat = DATASET_ICAT_DATA.copy()
dataset_with_techniques_icat.update(
{"datasetTechniques": [{"technique": TECHNIQUE_ICAT_DATA}]},
)
icat_data["parameters"][0]["investigation"]["investigationInstruments"] = [
{
"instrument": {
"datasetInstruments": [{"dataset": dataset_with_techniques_icat}],
},
},
]

relations = [
"datasets.instrument",
"datasets.files",
"datasets.parameters",
"datasets.samples",
"members.affiliation",
"members.person",
"parameters.dataset.techniques",
]

document_entity = models.Document.from_icat(icat_data, relations)

assert document_entity.dict(by_alias=True) == expected_entity_data

@pytest.mark.parametrize(
"panosc_entity_name, icat_data, required_related_fields",
[
Expand Down

0 comments on commit e52d595

Please sign in to comment.