Skip to content
Snippets Groups Projects
Commit 2fa1fc0b authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

TST: two tests for recursive definitions of records

parent a035d56d
No related branches found
No related tags found
2 merge requests!217TST: Make NamedTemporaryFiles Windows-compatible,!192Support recursive definitions in scanner
Pipeline #56760 failed
......@@ -405,3 +405,87 @@ def test_units():
assert rec.get_property("may_be_overwritten") is not None
assert rec.get_property("may_be_overwritten").value == "400"
assert rec.get_property("may_be_overwritten").unit == "°C"
def test_recursive_definition():
"""
"""
recursive_yaml = """
Converter:
type: DictElement
records:
Block:
Experiment: $Experiment
Experiment:
Block: $Block
"""
crawler_definition = _load_definition_from_yaml_dict(
[yaml.load(recursive_yaml, Loader=yaml.SafeLoader)])
converter_registry = create_converter_registry(crawler_definition)
data = {
"value_with_unit": "1.1 m",
"array_with_units": [
"1.1 cm",
"2.2 cm"
]
}
records = scan_structure_elements(DictElement(name="", value=data), crawler_definition,
converter_registry)
assert len(records) == 2
assert len(records[0].parents) == 1
assert records[0].parents[0].name == "Block"
assert len(records[1].parents) == 1
assert records[1].parents[0].name == "Experiment"
assert records[0].get_property("Experiment").value == records[1]
assert records[1].get_property("Block").value == records[0]
def test_recursive_definition_2():
"""
This is basically a test for:
https://gitlab.indiscale.com/caosdb/src/caosdb-crawler/-/issues/16
"""
recursive_yaml = """
FirstConverter:
type: DictElement
records:
Experiment:
subtree:
Converter:
type: DictElement
records:
Block:
Experiment: $Experiment
Experiment:
Block: $Block
"""
crawler_definition = _load_definition_from_yaml_dict(
[yaml.load(recursive_yaml, Loader=yaml.SafeLoader)])
converter_registry = create_converter_registry(crawler_definition)
data = {"data": {
"value_with_unit": "1.1 m",
"array_with_units": [
"1.1 cm",
"2.2 cm"
]
}}
records = scan_structure_elements(DictElement(name="", value=data), crawler_definition,
converter_registry)
assert len(records) == 2
assert len(records[0].parents) == 1
assert records[0].parents[0].name == "Block"
assert len(records[1].parents) == 1
assert records[1].parents[0].name == "Experiment"
assert records[0].get_property("Experiment").value == records[1]
assert records[1].get_property("Block").value == records[0]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment