@@ -96,13 +96,15 @@ pub struct Meta {
9696 #[ serde( skip_serializing_if = "Option::is_none" ) ]
9797 pub ligands : Option < Vec < Ligand > > ,
9898
99+ #[ validate( nested) ]
99100 #[ serde( skip_serializing_if = "Option::is_none" ) ]
100101 pub solvents : Option < Vec < Solvent > > ,
101102
102103 #[ validate( custom( function = "validate_dois" ) ) ]
103104 #[ serde( skip_serializing_if = "Option::is_none" ) ]
104105 pub dois : Option < Vec < String > > ,
105106
107+ #[ validate( nested) ]
106108 #[ serde( skip_serializing_if = "Option::is_none" ) ]
107109 pub papers : Option < Vec < Paper > > ,
108110
@@ -554,26 +556,27 @@ mod tests {
554556 let meta = Meta :: from_file ( & PathBuf :: from ( TOML_BAD1 ) ) ?;
555557 let errors = & meta. check ( ) ;
556558 let expected = vec ! [
557- r#"contributors[1].orcid: value "0000-2819-749X" invalid"# ,
558- r#"contributors[1].email: value "alex" invalid"# ,
559- r#"additional_files[1].file_type: value " " invalid"# ,
560- r#"additional_files[1].file_name: value " " invalid"# ,
561- r#"additional_files[1].description: value " " invalid"# ,
562- r#"topology_file_name: value " " invalid"# ,
563- r#"short_description: value " " invalid"# ,
564- r#"temperature_kelvin: value 0 must be >= 275 and <= 700"# ,
565- r#"dois: value ["1038/s43588-024-00627-2"] invalid"# ,
559+ r#"structure_file_name: value " " invalid"# ,
566560 r#"trajectory_file_name: value " " invalid"# ,
567- r#"external_links[1].url: value "zenodo.org/records/7711953" invalid"# ,
568- r#"external_links[1].label: value " " invalid"# ,
569- r#"forcefield: value " " invalid"# ,
570561 r#"pdb_id: value "5am" invalid"# ,
571- r#"water.model: value "XYZ" invalid"# ,
562+ r#"additional_files[1].description: value " " invalid"# ,
563+ r#"additional_files[1].file_name: value " " invalid"# ,
564+ r#"additional_files[1].file_type: value " " invalid"# ,
565+ r#"contributors[1].orcid: value "0000-2819-749X" invalid"# ,
566+ r#"contributors[1].email: value "alex" invalid"# ,
572567 r#"water.density_kg_m3: value 1000000.0 must be >= 900.0 and <= 1100.0"# ,
568+ r#"water.model: value "XYZ" invalid"# ,
569+ r#"toml_version: value 4 must be = 2"# ,
570+ r#"forcefield: value " " invalid"# ,
571+ r#"solvents[1].name: value " " invalid"# ,
572+ r#"topology_file_name: value " " invalid"# ,
573573 r#"lead_contributor_orcid: value "0000-0001-9961-144" invalid"# ,
574- r#"structure_file_name: value " " invalid"# ,
575574 r#"integration_timestep_fs: value 2000 must be >= 1 and <= 5"# ,
576- r#"toml_version: value 4 must be = 2"# ,
575+ r#"dois: value ["1038/s43588-024-00627-2"] invalid"# ,
576+ r#"external_links[1].label: value " " invalid"# ,
577+ r#"external_links[1].url: value "zenodo.org/records/7711953" invalid"# ,
578+ r#"temperature_kelvin: value 0 must be >= 275 and <= 700"# ,
579+ r#"short_description: value " " invalid"# ,
577580 ] ;
578581 assert_eq ! ( errors. len( ) , expected. len( ) ) ;
579582 for message in expected {
0 commit comments