@@ -164,8 +164,38 @@ public void testDataCiteXMLCreation() throws IOException {
164164 testDatasetField .setDatasetVersion (dv );
165165 testDatasetField .setDatasetFieldType (primitiveDSFType );
166166 testDatasetField .setSingleValue ("First Title" );
167+
168+ DatasetFieldType keywordType = new DatasetFieldType (DatasetFieldConstant .keyword , FieldType .NONE , true );
169+ DatasetFieldType keywordValueType = new DatasetFieldType (DatasetFieldConstant .keywordValue , FieldType .TEXT , false );
170+ DatasetFieldType keywordTermURIType = new DatasetFieldType (DatasetFieldConstant .keywordTermURI , FieldType .URL , false );
171+
172+ DatasetField keywordField = new DatasetField ();
173+ keywordField .setDatasetVersion (dv );
174+ keywordField .setDatasetFieldType (keywordType );
175+
176+ DatasetFieldCompoundValue compoundValue = new DatasetFieldCompoundValue ();
177+ compoundValue .setParentDatasetField (keywordField );
178+
179+ DatasetField valField = new DatasetField ();
180+ valField .setDatasetFieldType (keywordValueType );
181+ DatasetFieldValue val = new DatasetFieldValue ();
182+ val .setDatasetField (valField );
183+ val .setValue ("Keyword1" );
184+ valField .setDatasetFieldValues (new ArrayList <>(List .of (val )));
185+
186+ DatasetField uriField = new DatasetField ();
187+ uriField .setDatasetFieldType (keywordTermURIType );
188+ DatasetFieldValue uriVal = new DatasetFieldValue ();
189+ uriVal .setDatasetField (uriField );
190+ uriVal .setValue ("https://example.com/keyword1" );
191+ uriField .setDatasetFieldValues (new ArrayList <>(List .of (uriVal )));
192+
193+ compoundValue .setChildDatasetFields (new ArrayList <>(List .of (valField , uriField )));
194+ keywordField .setDatasetFieldCompoundValues (new ArrayList <>(List .of (compoundValue )));
195+
167196 List <DatasetField > fields = new ArrayList <>();
168197 fields .add (testDatasetField );
198+ fields .add (keywordField );
169199
170200 DatasetFieldType contributorTypeFieldType = new DatasetFieldType (DatasetFieldConstant .contributor ,
171201 DatasetFieldType .FieldType .TEXT , false );
@@ -247,6 +277,8 @@ public void testDataCiteXMLCreation() throws IOException {
247277 assertEquals ("ROR" , XmlPath .from (xml ).getString ("resource.creators.creator[3].nameIdentifier.@nameIdentifierScheme" ));
248278 assertEquals ("https://ror.org" , XmlPath .from (xml ).getString ("resource.creators.creator[3].nameIdentifier.@schemeURI" ));
249279 assertEquals ("Dataverse" , XmlPath .from (xml ).getString ("resource.publisher" ));
280+ assertEquals ("Keyword1" , XmlPath .from (xml ).getString ("resource.subjects.subject" ));
281+ assertEquals ("https://example.com/keyword1" , XmlPath .from (xml ).getString ("resource.subjects.subject.@valueURI" ));
250282 assertEquals ("Translator" , XmlPath .from (xml ).getString ("resource.contributors.contributor[0].@contributorType" ));
251283 assertEquals ("Translator Name" , XmlPath .from (xml ).getString ("resource.contributors.contributor[0].contributorName" ));
252284 assertEquals ("en" , XmlPath .from (xml ).getString ("resource.language" ));
@@ -310,7 +342,8 @@ public void testDataCiteXMLCreationAllFields() throws IOException {
310342 d .setDatasetType (dType );
311343 String xml = DOIDataCiteRegisterService .getMetadataFromDvObject (dv .getDataset ().getGlobalId ().asString (),
312344 new DataCitation (dv ).getDataCiteMetadata (), dv .getDataset ());
313- System .out .println ("Output from dataset-all-defaults is " + xml );
345+ assertTrue (xml .contains ("valueURI=\" http://keywordTermURI1.org\" " ));
346+ assertTrue (xml .contains ("valueURI=\" http://keywordTermURI2.org\" " ));
314347 try {
315348 StreamSource source = new StreamSource (new StringReader (xml ));
316349 source .setSystemId ("DataCite XML for test dataset" );
0 commit comments