From 9111fb8a13f56bb16beaf7e20392b756e29d6d34 Mon Sep 17 00:00:00 2001 From: Florian Spreckelsen <f.spreckelsen@inidscale.com> Date: Tue, 23 Jan 2024 15:52:07 +0100 Subject: [PATCH] TST: Reduce problematic records to the minimum --- integrationtests/test_issues.py | 63 +++++++-------------------------- 1 file changed, 13 insertions(+), 50 deletions(-) diff --git a/integrationtests/test_issues.py b/integrationtests/test_issues.py index 1de6e807..61996031 100644 --- a/integrationtests/test_issues.py +++ b/integrationtests/test_issues.py @@ -220,28 +220,8 @@ def test_indiscale_113(clear_database): # Create and insert minimal datamodel datamodel_str = """ -Dataset: - recommended_properties: - Title: - datatype: TEXT - Event: -Published Dataset: - inherit_from_suggested: - - Dataset - obligatory_properties: - DOI: - datatype: TEXT Event: - obligatory_properties: - Start datetime: - datatype: DATETIME - longitude: - datatype: DOUBLE - latitude: - datatype: DOUBLE recommended_properties: - label: - datatype: TEXT Basis: Campaign: Basis: @@ -252,16 +232,10 @@ Campaign: model = parse_model_from_string(datamodel_str) model.sync_data_model(noquestion=True) - # Register identifiables for Dataset (title), Published Dataset (DOI), Event - # (Start datetime, latitude, longitude, label), Basis (name), and Campaign - # (name). + # Register identifiables, everything is identified by name ident = CaosDBIdentifiableAdapter() - ident.register_identifiable("Dataset", db.RecordType().add_parent( - name="Dataset").add_property(name="title")) - ident.register_identifiable("Published Dataset", db.RecordType( - ).add_parent(name="Published Dataset").add_property(name="DOI")) - ident.register_identifiable("Event", db.RecordType().add_parent(name="Event").add_property(name="longitude").add_property( - name="latitude").add_property(name="Start datetime").add_property(name="label")) + ident.register_identifiable("Event", db.RecordType().add_parent( + name="Event").add_property(name="name")) ident.register_identifiable("Basis", db.RecordType().add_parent( name="Basis").add_property(name="name")) ident.register_identifiable("Campaign", db.RecordType().add_parent( @@ -269,34 +243,23 @@ Campaign: crawler = Crawler(identifiableAdapter=ident) - # Add records: ds_parent references ds_child references event references - # basis and campaign, campaign references basis. + # Add records: event references basis and campaign, campaign references + # basis. basis = db.Record(name="Poseidon").add_parent(name="Basis") - campaign = db.Record(name="POS386").add_parent(name="Campaign").add_property(name="Basis", value=basis) - event = db.Record(name="GeoB13952").add_parent(name="Event").add_property(name="label", value="GeoB13952") - event.add_property(name="Start datetime", value="2009-07-03T07:52:36") - event.add_property(name="longitude", value=7.22225) - event.add_property(name="latitude", value=43.6438) + campaign = db.Record(name="POS386").add_parent( + name="Campaign").add_property(name="Basis", value=basis) + event = db.Record(name="GeoB13952").add_parent(name="Event") event.add_property(name="Basis", value=basis) event.add_property(name="Campaign", value=campaign) - ds_child = db.Record().add_parent(name="Published Dataset") - ds_child.add_property(name="Title", value="Child title") - ds_child.add_property(name="DOI", value="https://doi.org/10.1594/PANGAEA.882184") - ds_child.add_property(name="Event", value=[event], datatype=db.LIST("Event")) - ds_parent = db.Record().add_parent(name="Published Dataset") - ds_parent.add_property(name="Title", value="Parent title") - ds_parent.add_property(name="DOI", value="https://doi.org/10.1594/PANGAEA.882187") - ds_parent.add_property(name="Dataset", datatype=db.LIST("Dataset"), value=ds_child) - - # The two lowest references need to exist in DB + + # basis and campaign already exist in the db db.Container().extend([basis, campaign]).insert() # redefine to trigger resolving basis = db.Record(name="Poseidon").add_parent(name="Basis") - campaign = db.Record(name="POS386").add_parent(name="Campaign").add_property(name="Basis", value=basis) - # multiples are necessary - # recs = [ds_parent, ds_child, event, event, ds_child, event, basis, campaign] + campaign = db.Record(name="POS386").add_parent( + name="Campaign").add_property(name="Basis", value=basis) recs = [event, basis, campaign] - + ins, ups = crawler.synchronize(crawled_data=recs, unique_names=False) # There is only two datasets and one event to be inserted assert len(ins) == 3 -- GitLab