Source code for pyicat_plus.tests.test_icat_update_metadata
import pytest
import json
[docs]
def send_update_metadata(client, value):
client.send_update_metadata(
proposal=value["proposal"],
beamline=value["beamline"],
dataset_paths=value["datasetPaths"],
metadata_value=value["metadataValue"],
metadata_name=value["metadataName"],
)
[docs]
def test_send_update_metadata_sample(icat_update_metadata_client):
client, messages = icat_update_metadata_client
client.check_health()
expected = {
"proposal": "sc415",
"beamline": "id00",
"datasetPaths": ["/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset"],
"metadataName": "Sample_name",
"metadataValue": "newsamplename",
}
send_update_metadata(client, expected)
message = messages.get(timeout=10)
message = json.loads(message)
assert message == expected
assert messages.empty()
[docs]
def test_send_update_metadata_sample_with_multiple_datasets(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
client.check_health()
expected = {
"proposal": "sc415",
"beamline": "id00",
"datasetPaths": [
"/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset1",
"/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset2",
],
"metadataName": "Sample_name",
"metadataValue": "newsamplename",
}
send_update_metadata(client, expected)
message = messages.get(timeout=10)
message = json.loads(message)
assert message == expected
assert messages.empty()
[docs]
def test_send_update_metadata_raises_error_if_proposal_is_missing(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
with pytest.raises(AssertionError, match="ICAT requires the proposal"):
client.send_update_metadata(
proposal=None,
beamline="id00",
dataset_paths="/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset/",
metadata_value="newsamplename",
metadata_name="Sample_name",
)
[docs]
def test_send_update_metadata_raises_error_if_beamline_is_missing(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
with pytest.raises(AssertionError, match="ICAT requires the beamline"):
client.send_update_metadata(
proposal="sc415",
beamline=None,
dataset_paths="/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset/",
metadata_value="newsamplename",
metadata_name="Sample_name",
)
[docs]
def test_send_update_metadata_raises_error_if_dataset_paths_is_missing(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
with pytest.raises(AssertionError, match="ICAT requires the dataset path"):
client.send_update_metadata(
proposal="sc415",
beamline="id00",
dataset_paths=None,
metadata_value="newsamplename",
metadata_name="Sample_name",
)
[docs]
def test_send_update_metadata_raises_error_if_dataset_paths_is_empty(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
with pytest.raises(AssertionError, match="ICAT requires the dataset path"):
client.send_update_metadata(
proposal="sc415",
beamline="id00",
dataset_paths=[],
metadata_value="newsamplename",
metadata_name="Sample_name",
)
[docs]
def test_send_update_metadata_raises_error_if_metadata_value_is_missing(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
with pytest.raises(AssertionError, match="ICAT requires the metadata value"):
client.send_update_metadata(
proposal="sc415",
beamline="id00",
dataset_paths="/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset/",
metadata_value=None,
metadata_name="Sample_name",
)
[docs]
def test_send_update_metadata_raises_error_if_metadata_name_is_missing(
icat_update_metadata_client,
):
client, messages = icat_update_metadata_client
with pytest.raises(AssertionError, match="ICAT requires the metadata name"):
client.send_update_metadata(
proposal="sc415",
beamline="id00",
dataset_paths="/data/visitor/sc415/id00/20230101/RAW_DATA/sample/dataset/",
metadata_value="newsamplename",
metadata_name=None,
)