Skip to content

Commit

Permalink
add ROR tests for author affiliation and funder #11075
Browse files Browse the repository at this point in the history
  • Loading branch information
pdurbin committed Jan 21, 2025
1 parent 14a42cb commit 746d583
Showing 1 changed file with 172 additions and 0 deletions.
172 changes: 172 additions & 0 deletions src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -4303,6 +4303,178 @@ public void testCitationDate() throws IOException {
.statusCode(OK.getStatusCode());
}

@Test
public void testDataCiteExport() throws IOException {

Response createUser = UtilIT.createRandomUser();
createUser.then().assertThat().statusCode(OK.getStatusCode());
String username = UtilIT.getUsernameFromResponse(createUser);
String apiToken = UtilIT.getApiTokenFromResponse(createUser);

Response createDataverse = UtilIT.createRandomDataverse(apiToken);
createDataverse.then().assertThat().statusCode(CREATED.getStatusCode());
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse);
Integer dataverseId = UtilIT.getDataverseIdFromResponse(createDataverse);

JsonObjectBuilder datasetJson = Json.createObjectBuilder()
.add("datasetVersion", Json.createObjectBuilder()
.add("license", Json.createObjectBuilder()
.add("name", "CC0 1.0")
.add("uri", "http://creativecommons.org/publicdomain/zero/1.0")
)
.add("metadataBlocks", Json.createObjectBuilder()
.add("citation", Json.createObjectBuilder()
.add("fields", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("typeName", "title")
.add("value", "Test dataset")
.add("typeClass", "primitive")
.add("multiple", false)
)
.add(Json.createObjectBuilder()
.add("value", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("authorName",
Json.createObjectBuilder()
.add("value", "Simpson, Homer")
.add("typeClass", "primitive")
.add("multiple", false)
.add("typeName", "authorName")
)
.add("authorAffiliation",
Json.createObjectBuilder()
.add("value", "https://ror.org/03vek6s52")
.add("typeClass", "primitive")
.add("multiple", false)
.add("typeName", "authorAffiliation")
)
)
)
.add("typeClass", "compound")
.add("multiple", true)
.add("typeName", "author")
)
.add(Json.createObjectBuilder()
.add("value", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("datasetContactEmail",
Json.createObjectBuilder()
.add("value", "[email protected]")
.add("typeClass", "primitive")
.add("multiple", false)
.add("typeName", "datasetContactEmail"))
)
)
.add("typeClass", "compound")
.add("multiple", true)
.add("typeName", "datasetContact")
)
.add(Json.createObjectBuilder()
.add("value", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("dsDescriptionValue",
Json.createObjectBuilder()
.add("value", "Just a test dataset.")
.add("typeClass", "primitive")
.add("multiple", false)
.add("typeName", "dsDescriptionValue"))
)
)
.add("typeClass", "compound")
.add("multiple", true)
.add("typeName", "dsDescription")
)
.add(Json.createObjectBuilder()
.add("value", Json.createArrayBuilder()
.add("Other")
)
.add("typeClass", "controlledVocabulary")
.add("multiple", true)
.add("typeName", "subject")
)
.add(Json.createObjectBuilder()
.add("value", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("authorName",
Json.createObjectBuilder()
.add("value", "https://ror.org/05h1kgg64") // NIH
.add("typeClass", "primitive")
.add("multiple", false)
.add("typeName", "grantNumberAgency")
)
.add("authorAffiliation",
Json.createObjectBuilder()
.add("value", "12345")
.add("typeClass", "primitive")
.add("multiple", false)
.add("typeName", "grantNumberValue")
)
)
)
.add("typeClass", "compound")
.add("multiple", true)
.add("typeName", "grantNumber")
)
)
)
));

Response createDatasetResponse = UtilIT.createDataset(dataverseAlias, datasetJson, apiToken);
createDatasetResponse.prettyPrint();
Integer datasetId = UtilIT.getDatasetIdFromResponse(createDatasetResponse);
String datasetPid = JsonPath.from(createDatasetResponse.getBody().asString()).getString("data.persistentId");

Response publishDataverse = UtilIT.publishDataverseViaNativeApi(dataverseAlias, apiToken);
publishDataverse.prettyPrint();
publishDataverse.then().assertThat().statusCode(OK.getStatusCode());
Response publishDataset = UtilIT.publishDatasetViaNativeApi(datasetId, "major", apiToken);
publishDataset.prettyPrint();
publishDataset.then().assertThat().statusCode(OK.getStatusCode());

Response exportDatasetAsDataCite = UtilIT.exportDataset(datasetPid, "Datacite", apiToken, true);
exportDatasetAsDataCite.prettyPrint();
exportDatasetAsDataCite.then().assertThat()
.body("resource.creators.creator[0].creatorName", equalTo("Simpson, Homer"))
// see below for additional affiliation assertions, which can vary
.body("resource.creators.creator[0].affiliation.@schemeURI", equalTo("https://ror.org"))
.body("resource.creators.creator[0].affiliation.@affiliationIdentifierScheme", equalTo("ROR"))
// see below for additional fundingReference assertions, which can vary
.body("resource.fundingReferences.fundingReference[0].awardNumber", equalTo("12345"))
.statusCode(OK.getStatusCode());

// Out of the box :CVocConf is not set. If you set it with
// https://github.com/gdcc/dataverse-external-vocab-support/blob/de011d239254ff7d651212c565f8604808dcd7e9/examples/config/grantNumberAgencyRor.json
// you can expect different results.
boolean authorsOrcidAndRorEnabled = false;
if (authorsOrcidAndRorEnabled) {
exportDatasetAsDataCite.then().assertThat()
.body("resource.creators.creator[0].affiliation", equalTo("Harvard University"))
// Once https://github.com/IQSS/dataverse/pull/11175 is merged the equalTo bellow
// should be "https://ror.org/03vek6s52" instead of "Harvard University".
.body("resource.creators.creator[0].affiliation.@affiliationIdentifier", equalTo("Harvard University"));
} else {
exportDatasetAsDataCite.then().assertThat()
.body("resource.creators.creator[0].affiliation", equalTo("https://ror.org/03vek6s52"))
.body("resource.creators.creator[0].affiliation.@affiliationIdentifier", equalTo("https://ror.org/03vek6s52"));
}

// Out of the box :CVocConf is not set. If you set it with
// https://github.com/gdcc/dataverse-external-vocab-support/blob/de011d239254ff7d651212c565f8604808dcd7e9/examples/config/grantNumberAgencyRor.json
// you can expect different results.
boolean grantNumberAgencyRorEnabled = false;
if (grantNumberAgencyRorEnabled) {
exportDatasetAsDataCite.then().assertThat()
.body("resource.fundingReferences.fundingReference[0].funderName", equalTo("National Institute of Health"))
.body("resource.fundingReferences.fundingReference[0].funderIdentifier.@funderIdentifierType", equalTo("ROR"))
.body("resource.fundingReferences.fundingReference[0].funderIdentifier.@schemeURI", equalTo("https://ror.org"))
.body("resource.fundingReferences.fundingReference[0].funderIdentifier", equalTo("https://ror.org/05h1kgg64"));
} else {
exportDatasetAsDataCite.then().assertThat()
.body("resource.fundingReferences.fundingReference[0].funderName", equalTo("https://ror.org/05h1kgg64"))
.body("resource.fundingReferences.fundingReference[0].awardNumber", equalTo("12345"));
}
}

@Test
public void getVersionFiles() throws IOException, InterruptedException {
Response createUser = UtilIT.createRandomUser();
Expand Down

0 comments on commit 746d583

Please sign in to comment.