-
Notifications
You must be signed in to change notification settings - Fork 501
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add ROR tests for author affiliation and funder #11075
- Loading branch information
Showing
1 changed file
with
172 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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(); | ||
|