@@ -692,6 +692,63 @@ def test_ingest_error_searcherr(client, investigation, schemadir, case):
692692 logger .info ("Raised %s: %s" , exc .type .__name__ , exc .value )
693693
694694
695+ classattr_metadata = NamedBytesIO ("""<?xml version='1.0' encoding='UTF-8'?>
696+ <icatingest version="1.1">
697+ <head>
698+ <date>2024-10-11T10:51:26+02:00</date>
699+ <generator>metadata-writer 0.27a</generator>
700+ </head>
701+ <data>
702+ <dataset id="Dataset_1">
703+ <name>testingest_classattr_1</name>
704+ <description>Auxiliary data</description>
705+ <startDate>2022-02-03T15:40:12+01:00</startDate>
706+ <endDate>2022-02-03T17:04:22+01:00</endDate>
707+ </dataset>
708+ </data>
709+ </icatingest>
710+ """ .encode ("utf8" ), "classattr_metadata" )
711+ classattr_cases = [
712+ Case (
713+ data = ["testingest_classattr_1" ],
714+ metadata = classattr_metadata ,
715+ checks = {
716+ "testingest_classattr_1" : [
717+ ("SELECT ds.complete FROM Dataset ds WHERE ds.id = %d" ,
718+ True ),
719+ ("SELECT ds.type.name FROM Dataset ds WHERE ds.id = %d" ,
720+ "other" ),
721+ ],
722+ },
723+ marks = (),
724+ ),
725+ ]
726+ @pytest .mark .parametrize ("case" , [
727+ pytest .param (c , id = c .metadata .name , marks = c .marks ) for c in classattr_cases
728+ ])
729+ def test_ingest_classattr (monkeypatch , client , investigation , schemadir , case ):
730+ """Test overriding prescribed values set in IngestReader class attributes.
731+ """
732+ monkeypatch .setattr (IngestReader , "Dataset_complete" , "true" )
733+ monkeypatch .setattr (IngestReader , "DatasetType_name" , "other" )
734+ datasets = []
735+ for name in case .data :
736+ datasets .append (client .new ("Dataset" , name = name ))
737+ reader = IngestReader (client , case .metadata , investigation )
738+ reader .ingest (datasets , dry_run = True , update_ds = True )
739+ for ds in datasets :
740+ ds .create ()
741+ reader .ingest (datasets )
742+ for name in case .checks .keys ():
743+ query = Query (client , "Dataset" , conditions = {
744+ "name" : "= '%s'" % name ,
745+ "investigation.id" : "= %d" % investigation .id ,
746+ })
747+ ds = client .assertedSearch (query )[0 ]
748+ for query , res in case .checks [name ]:
749+ assert client .assertedSearch (query % ds .id )[0 ] == res
750+
751+
695752customcases = [
696753 Case (
697754 data = ["testingest_custom_icatingest_1" ],
0 commit comments