Source code for pyicat_plus.tests.icat_messaging.test_investigation
import datetime
from ..._icat_messaging.serializers.investigation import (
raw_serialize_investigation_message,
)
from ..._icat_messaging.serializers.investigation import serialize_investigation_message
from ..._icat_messaging.utils import datetime_utils
[docs]
def test_investigation_message():
proposal = "MX-123"
beamline = "ID30A-3"
start_datetime = datetime.datetime.now().astimezone()
expected = f"""<?xml version="1.0" encoding="UTF-8"?>
<tns:investigation xmlns:tns="http://www.esrf.fr/icat">
<tns:experiment>mx-123</tns:experiment>
<tns:instrument>id30a-3</tns:instrument>
<tns:startDate>{datetime_utils.with_timezone_zulu_format(start_datetime)}</tns:startDate>
</tns:investigation>
"""
data = serialize_investigation_message(
beamline=beamline, proposal=proposal, start_datetime=start_datetime, indent=" "
)
assert data.decode("utf-8") == expected
[docs]
def test_investigation_message_xsd_only():
data = {
"experiment": "MX-123",
"instrument": "ID30A-3",
"startDate": "2026-03-08T09:18:49.678825+01:00",
"investigationId": 4521,
}
expected = """<?xml version="1.0" encoding="UTF-8"?>
<tns:investigation xmlns:tns="http://www.esrf.fr/icat">
<tns:experiment>MX-123</tns:experiment>
<tns:instrument>ID30A-3</tns:instrument>
<tns:startDate>2026-03-08T09:18:49.678825+01:00</tns:startDate>
<tns:investigationId>4521</tns:investigationId>
</tns:investigation>
"""
data = raw_serialize_investigation_message(data, indent=" ")
assert data.decode("utf-8") == expected