def test_esdumper_with_edtfext(app, db, minimal_record, location, date, expected_start, expected_end): """Test edft extension implementation.""" # Create a simple extension that adds a computed field. dumper = ElasticsearchDumper(extensions=[ EDTFDumperExt("metadata.publication_date"), EDTFListDumperExt("metadata.dates", "date"), ]) minimal_record["metadata"]["publication_date"] = date minimal_record["metadata"]["dates"] = [{"date": date}] # Create the record record = RDMRecord.create(minimal_record, parent=RDMParent.create({})) db.session.commit() # Dump it dump = record.dumps(dumper=dumper) assert dump["metadata"]["publication_date_range"]["gte"] == expected_start assert dump["metadata"]["publication_date_range"]["lte"] == expected_end assert dump["metadata"]["publication_date"] == date assert dump["metadata"]["dates"][0]["date_range"]["gte"] == expected_start assert dump["metadata"]["dates"][0]["date_range"]["lte"] == expected_end assert dump["metadata"]["dates"][0]["date"] == date # Load it new_record = RDMRecord.loads(dump, loader=dumper) assert "publication_date_range" not in new_record["metadata"] assert "publication_date" in new_record["metadata"] assert "date_range" not in new_record["metadata"]["dates"][0] assert "date" in new_record["metadata"]["dates"][0]
def test_eslistdumper_with_edtfext_parse_error(app, db, minimal_record): """Test edft extension implementation.""" dumper = ElasticsearchDumper( extensions=[ EDTFListDumperExt("metadata.creators", "family_name"), ] ) # Create the record record = RDMRecord.create(minimal_record, parent=RDMParent.create({})) db.session.commit() # Dump it dump = record.dumps(dumper=dumper) person_or_org = dump["metadata"]["creators"][0]["person_or_org"] assert "family_name_range" not in person_or_org assert "family_name" in person_or_org # Load it new_record = RDMRecord.loads(dump, loader=dumper) person_or_org = dump["metadata"]["creators"][0]["person_or_org"] assert 'family_name_range' not in person_or_org assert 'family_name' in person_or_org assert 'type_start' not in new_record['metadata']['resource_type'] assert 'type_end' not in new_record['metadata']['resource_type'] assert 'type' in new_record['metadata']['resource_type']
def test_eslistdumper_with_edtfext_not_defined(app, db, minimal_record): """Test edft extension implementation.""" # Create a simple extension that adds a computed field. dumper = ElasticsearchDumper(extensions=[ EDTFListDumperExt("metadata.non_existing_array_field", "date"), ]) # Create the record record = RDMRecord.create(minimal_record, parent=RDMParent.create({})) db.session.commit() # Dump it dump = record.dumps(dumper=dumper) assert "non_existing_array_field_range" not in dump["metadata"] assert "non_existing_array_field" not in dump["metadata"] # Load it new_record = RDMRecord.loads(dump, loader=dumper) assert "non_existing_array_field_range" not in new_record["metadata"] assert "non_existing_array_field" not in new_record["metadata"]