Source code for icat_esrf_definitions.tests.test_esrfet

import re
from importlib.metadata import version

import pytest

from ..errors import ValidationWarning
from ..models import IcatDatasetParameters


[docs] def test_esrfet_fields(input_dict, esrfet_version): input_dict["definition"] = "XAS XRF" input_dict["technique_pid"] = ( "https://w3id.org/PaN/ESRFET#XAS https://w3id.org/PaN/ESRFET#XRF" ) input_dict["technique_pid_esrfet_version"] = esrfet_version model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_fields_names_only(input_dict, esrfet_version): input_dict["definition"] = "XAS XRF" model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_fields_pids_only(input_dict, esrfet_version): input_dict["technique_pid"] = ( "https://w3id.org/PaN/ESRFET#XAS https://w3id.org/PaN/ESRFET#XRF" ) model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_fields_missing_name(input_dict, esrfet_version): input_dict["definition"] = "XAS" input_dict["technique_pid"] = ( "https://w3id.org/PaN/ESRFET#XAS https://w3id.org/PaN/ESRFET#XRF" ) input_dict["technique_pid_esrfet_version"] = esrfet_version model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_fields_missing_pid(input_dict, esrfet_version): input_dict["definition"] = "XAS XRF" input_dict["technique_pid"] = "https://w3id.org/PaN/ESRFET#XAS" input_dict["technique_pid_esrfet_version"] = esrfet_version model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_fields_only_unknown_name(input_dict, esrfet_version): input_dict["definition"] = "UNKNOWN1 UNKNOWN2" warning = f"""Invalid ESRF technique reference(s) detected. Unknown technique names: UNKNOWN1, UNKNOWN2 These entries are not recognized in the ESRFET ontology and will be kept as-is. Please choose valid techniques from: https://esrf-ontologies.readthedocs.io/en/{version('icat-esrf-definitions')}/esrfet.html""" with pytest.warns(ValidationWarning, match=re.escape(warning)): model = IcatDatasetParameters(**input_dict) assert model.definition == ["UNKNOWN1", "UNKNOWN2"] assert model.technique_pid is None assert model.technique_pid_esrfet_version is None
[docs] def test_esrfet_fields_unknown_name(input_dict, esrfet_version): input_dict["definition"] = "XAS XRF UNKNOWN" input_dict["technique_pid"] = ( "https://w3id.org/PaN/ESRFET#XAS https://w3id.org/PaN/ESRFET#XRF" ) input_dict["technique_pid_esrfet_version"] = esrfet_version warning = f"""Invalid ESRF technique reference(s) detected. Unknown technique names: UNKNOWN These entries are not recognized in the ESRFET ontology and will be kept as-is. Please choose valid techniques from: https://esrf-ontologies.readthedocs.io/en/{version('icat-esrf-definitions')}/esrfet.html""" with pytest.warns(ValidationWarning, match=re.escape(warning)): model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF", "UNKNOWN"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_fields_only_unknown_pid(input_dict): input_dict["technique_pid"] = ( "https://w3id.org/PaN/ESRFET#UNKNOWN1 https://w3id.org/PaN/ESRFET#UNKNOWN2" ) warning = f"""Invalid ESRF technique reference(s) detected. Unknown technique PIDs: https://w3id.org/PaN/ESRFET#UNKNOWN1, https://w3id.org/PaN/ESRFET#UNKNOWN2 These entries are not recognized in the ESRFET ontology and will be kept as-is. Please choose valid techniques from: https://esrf-ontologies.readthedocs.io/en/{version('icat-esrf-definitions')}/esrfet.html""" with pytest.warns(ValidationWarning, match=re.escape(warning)): model = IcatDatasetParameters(**input_dict) assert model.definition is None assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#UNKNOWN1", "https://w3id.org/PaN/ESRFET#UNKNOWN2", ] assert model.technique_pid_esrfet_version is None
[docs] def test_esrfet_fields_unknown_pid(input_dict, esrfet_version): input_dict["definition"] = "XAS XRF" input_dict["technique_pid"] = ( "https://w3id.org/PaN/ESRFET#XAS https://w3id.org/PaN/ESRFET#XRF https://w3id.org/PaN/ESRFET#UNKNOWN" ) input_dict["technique_pid_esrfet_version"] = esrfet_version warning = f"""Invalid ESRF technique reference(s) detected. Unknown technique PIDs: https://w3id.org/PaN/ESRFET#UNKNOWN These entries are not recognized in the ESRFET ontology and will be kept as-is. Please choose valid techniques from: https://esrf-ontologies.readthedocs.io/en/{version('icat-esrf-definitions')}/esrfet.html""" with pytest.warns(ValidationWarning, match=re.escape(warning)): model = IcatDatasetParameters(**input_dict) assert model.definition == ["XAS", "XRF"] assert model.technique_pid == [ "https://w3id.org/PaN/ESRFET#XAS", "https://w3id.org/PaN/ESRFET#XRF", "https://w3id.org/PaN/ESRFET#UNKNOWN", ] assert model.technique_pid_esrfet_version == esrfet_version
[docs] def test_esrfet_empty_fields(input_dict, esrfet_version): input_dict["technique_pid_esrfet_version"] = esrfet_version model = IcatDatasetParameters(**input_dict) assert model.definition is None assert model.technique_pid is None assert model.technique_pid_esrfet_version is None
[docs] def test_esrfet_no_techique_fields(input_dict, esrfet_version): input_dict["technique_pid_esrfet_version"] = esrfet_version model = IcatDatasetParameters(**input_dict) assert model.definition is None assert model.technique_pid is None assert model.technique_pid_esrfet_version is None
[docs] def test_esrfet_replace_purl_pids(input_dict, esrfet_version): input_dict["definition"] = "XRPD" input_dict["technique_pid"] = "http://purl.org/pan-science/ESRFET#XRPD" model = IcatDatasetParameters(**input_dict) assert model.definition == ["XRPD"] assert model.technique_pid == ["https://w3id.org/PaN/ESRFET#XRPD"] assert model.technique_pid_esrfet_version == esrfet_version