Skip to content
Snippets Groups Projects
Commit 8f9f28e3 authored by florian's avatar florian
Browse files

ENH: Add xfail test for reference update

parent 4864e16b
No related branches found
No related tags found
2 merge requests!53Release 0.1,!20F identifiable test
Pipeline #23137 passed
...@@ -318,6 +318,13 @@ Data: ...@@ -318,6 +318,13 @@ Data:
Dataset: Dataset:
Project: $Project Project: $Project
subtree: subtree:
name_element:
type: DictTextElement
match_name: "name"
match_value: "(?P<name>.*)"
records:
Project:
name: $name
full_name_element: full_name_element:
type: DictTextElement type: DictTextElement
match_name: "full_name" match_name: "full_name"
......
...@@ -129,14 +129,75 @@ def test_dataset( ...@@ -129,14 +129,75 @@ def test_dataset(
reason="Reference properties are not updated correctly. " reason="Reference properties are not updated correctly. "
"See https://gitlab.indiscale.com/caosdb/src/caosdb-crawler/-/issues/12." "See https://gitlab.indiscale.com/caosdb/src/caosdb-crawler/-/issues/12."
) )
def test_event_update(usemodel): def test_event_update(clear_database, usemodel):
ident = CaosDBIdentifiableAdapter() identifiable_path = os.path.join(DATADIR, "identifiables.yml")
ident.load_from_yaml_definition(os.path.join(DATADIR, "identifiables.yml"))
crawler_definition_path = os.path.join(DATADIR, "dataset_cfoods.yml") crawler_definition_path = os.path.join(DATADIR, "dataset_cfoods.yml")
# TODO(fspreck): Use crawler_main # TODO(fspreck): Use crawler_main
crawler_main() crawler_main(
os.path.join(DATADIR, 'data'),
crawler_definition_path,
identifiable_path,
True,
os.path.join(DATADIR, "provenance.yml"),
False,
True,
""
)
old_dataset_rec = db.execute_query(
"FIND RECORD Dataset WHICH HAS AN EVENT WITH location='Bremen, Germany'")
assert len(old_dataset_rec) == 1
old_dataset_rec = old_dataset_rec[0]
assert old_dataset_rec.get_property("Event").datatype == db.LIST("Event")
assert len(old_dataset_rec.get_property("Event").value) == 1
old_event_rec = db.Record(
id=old_dataset_rec.get_property("Event").value[0]).retrieve()
# TODO(fspreck): crawl again manually, edit the event records in the update # TODO(fspreck): crawl again manually, edit the event records in the update
# list, synchronize, and test whether the events have been updated. # list, synchronize, and test whether the events have been updated.
ident = CaosDBIdentifiableAdapter()
ident.load_from_yaml_definition(identifiable_path)
second_crawler = Crawler(identifiableAdapter=ident)
crawler_definition = second_crawler.load_definition(
crawler_definition_path)
converter_registry = second_crawler.load_converters(crawler_definition)
records = second_crawler.start_crawling(
Directory("data", os.path.join(DATADIR, "data")),
crawler_definition,
converter_registry
)
for rec in records:
if rec.parents[0].name == "Event":
rec.get_property("longitude").value = 0.0
rec.get_property("latitude").value = 0.0
rec.get_property("location").value = "Origin"
elif rec.parents[0].name == "Dataset":
rec.get_property("Event").value[0].get_property(
"longitude").value = 0.0
rec.get_property("Event").value[0].get_property(
"latitude").value = 0.0
rec.get_property("Event").value[0].get_property(
"location").value = "Origin"
second_crawler.synchronize()
# Dataset is still the same Record, but with an updated event
new_dataset_rec = db.Record(id=old_dataset_rec.id).retrieve()
assert new_dataset_rec.get_property(
"title").value == old_dataset_rec.get_property("title").value
assert new_dataset_rec.get_property("Event").datatype == db.LIST("Event")
assert new_dataset_rec.get_property("Event").value is not None
assert len(new_dataset_rec.get_property("Event").value) == 1
assert new_dataset_rec.get_property("Event").value[0] != old_event_rec.id
# The event has new properties
new_event_rec = db.Record(
id=new_dataset_rec.get_property("Event").value[0]).retrieve()
assert new_event_rec.get_property("longitude").value == 0.0
assert new_event_rec.get_property("latitude").value == 0.0
assert new_event_rec.get_property("location").value == "Origin"
assert new_event_rec.get_property(
"start_datetime").value == old_event_rec.get_property("start_datetime").value
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment