Skip to content
Snippets Groups Projects
Commit 9111fb8a authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

TST: Reduce problematic records to the minimum

parent c7892b55
No related branches found
No related tags found
3 merge requests!160STY: styling,!141FIX: Resolve referneces to existing entities correctly,!140New f fix merge
Pipeline #46306 failed
......@@ -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
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