Skip to content

Commit c59f743

Browse files
committed
add tests for export and citation date #8129
1 parent b3e4635 commit c59f743

File tree

2 files changed

+82
-5
lines changed

2 files changed

+82
-5
lines changed

src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java

+68-5
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,7 @@ public void testCreatePublishDestroyDataset() {
546546
Response exportDatasetAsDublinCore = UtilIT.exportDataset(datasetPersistentId, "oai_dc", apiToken);
547547
exportDatasetAsDublinCore.prettyPrint();
548548
exportDatasetAsDublinCore.then().assertThat()
549-
// FIXME: Get this working. See https://github.com/rest-assured/rest-assured/wiki/Usage#example-3---complex-parsing-and-validation
550-
// .body("oai_dc:dc.find { it == 'dc:title' }.item", hasItems("Darwin's Finches"))
549+
.body("oai_dc.title", is("Darwin's Finches"))
551550
.statusCode(OK.getStatusCode());
552551

553552
Response exportDatasetAsDdi = UtilIT.exportDataset(datasetPersistentId, "ddi", apiToken);
@@ -1111,8 +1110,7 @@ public void testExport() {
11111110
Response exportDatasetAsDublinCore = UtilIT.exportDataset(datasetPersistentId, "oai_dc", apiToken);
11121111
exportDatasetAsDublinCore.prettyPrint();
11131112
exportDatasetAsDublinCore.then().assertThat()
1114-
// FIXME: Get this working. See https://github.com/rest-assured/rest-assured/wiki/Usage#example-3---complex-parsing-and-validation
1115-
// .body("oai_dc:dc.find { it == 'dc:title' }.item", hasItems("Darwin's Finches"))
1113+
.body("oai_dc.title", is("Dataset One"))
11161114
.statusCode(OK.getStatusCode());
11171115

11181116
Response exportDatasetAsDdi = UtilIT.exportDataset(datasetPersistentId, "ddi", apiToken);
@@ -3955,7 +3953,72 @@ public void getDatasetVersionCitation() {
39553953
.assertThat().body("data.message", containsString(String.valueOf(persistentId)));
39563954
}
39573955

3958-
3956+
@Test
3957+
public void testCitationDate() throws IOException {
3958+
3959+
Response createUser = UtilIT.createRandomUser();
3960+
createUser.then().assertThat().statusCode(OK.getStatusCode());
3961+
String username = UtilIT.getUsernameFromResponse(createUser);
3962+
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
3963+
3964+
Response createDataverse = UtilIT.createRandomDataverse(apiToken);
3965+
createDataverse.then().assertThat().statusCode(CREATED.getStatusCode());
3966+
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse);
3967+
Integer dataverseId = UtilIT.getDataverseIdFromResponse(createDataverse);
3968+
Response createDataset = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiToken);
3969+
createDataset.then().assertThat().statusCode(CREATED.getStatusCode());
3970+
Integer datasetId = UtilIT.getDatasetIdFromResponse(createDataset);
3971+
String datasetPid = JsonPath.from(createDataset.getBody().asString()).getString("data.persistentId");
3972+
3973+
Path pathToAddDateOfDepositJson = Paths.get(java.nio.file.Files.createTempDirectory(null) + File.separator + "dateOfDeposit.json");
3974+
String dateOfDeposit = """
3975+
{
3976+
"fields": [
3977+
{
3978+
"typeName": "dateOfDeposit",
3979+
"value": "1999-12-31"
3980+
}
3981+
]
3982+
}
3983+
""";
3984+
java.nio.file.Files.write(pathToAddDateOfDepositJson, dateOfDeposit.getBytes());
3985+
3986+
Response addDateOfDeposit = UtilIT.addDatasetMetadataViaNative(datasetPid, pathToAddDateOfDepositJson.toString(), apiToken);
3987+
addDateOfDeposit.prettyPrint();
3988+
addDateOfDeposit.then().assertThat()
3989+
.statusCode(OK.getStatusCode())
3990+
.body("data.metadataBlocks.citation.fields[5].value", equalTo("1999-12-31"));
3991+
3992+
Response setCitationDate = UtilIT.setDatasetCitationDateField(datasetPid, "dateOfDeposit", apiToken);
3993+
setCitationDate.prettyPrint();
3994+
setCitationDate.then().assertThat().statusCode(OK.getStatusCode());
3995+
3996+
UtilIT.publishDataverseViaNativeApi(dataverseAlias, apiToken);
3997+
UtilIT.publishDatasetViaNativeApi(datasetId, "major", apiToken).then().assertThat().statusCode(OK.getStatusCode());
3998+
3999+
Response getCitationAfter = UtilIT.getDatasetVersionCitation(datasetId, DS_VERSION_LATEST_PUBLISHED, true, apiToken);
4000+
getCitationAfter.prettyPrint();
4001+
4002+
String doi = datasetPid.substring(4);
4003+
4004+
// Note that the year 1999 appears in the citation because we
4005+
// set the citation date field to a field that has that year.
4006+
String expectedCitation = "Finch, Fiona, 1999, \"Darwin's Finches\", <a href=\"https://doi.org/" + doi + "\" target=\"_blank\">https://doi.org/" + doi + "</a>, Root, V1";
4007+
4008+
getCitationAfter.then().assertThat()
4009+
.statusCode(OK.getStatusCode())
4010+
.body("data.message", is(expectedCitation));
4011+
4012+
Response exportDatasetAsDublinCore = UtilIT.exportDataset(datasetPid, "oai_dc", apiToken);
4013+
exportDatasetAsDublinCore.prettyPrint();
4014+
String todayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
4015+
exportDatasetAsDublinCore.then().assertThat()
4016+
.body("oai_dc.type", equalTo("Dataset"))
4017+
.body("oai_dc.date", equalTo(todayDate))
4018+
.body("oai_dc.rights", equalTo("CC0 1.0"))
4019+
.statusCode(OK.getStatusCode());
4020+
}
4021+
39594022
@Test
39604023
public void getVersionFiles() throws IOException, InterruptedException {
39614024
Response createUser = UtilIT.createRandomUser();

src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java

+14
Original file line numberDiff line numberDiff line change
@@ -3672,6 +3672,20 @@ static Response getDatasetVersionCitation(Integer datasetId, String version, boo
36723672
return response;
36733673
}
36743674

3675+
static Response setDatasetCitationDateField(String datasetIdOrPersistentId, String dateField, String apiToken) {
3676+
String idInPath = datasetIdOrPersistentId; // Assume it's a number.
3677+
String optionalQueryParam = ""; // If idOrPersistentId is a number we'll just put it in the path.
3678+
if (!NumberUtils.isCreatable(datasetIdOrPersistentId)) {
3679+
idInPath = ":persistentId";
3680+
optionalQueryParam = "?persistentId=" + datasetIdOrPersistentId;
3681+
}
3682+
Response response = given()
3683+
.header(API_TOKEN_HTTP_HEADER, apiToken)
3684+
.body(dateField)
3685+
.put("/api/datasets/" + idInPath + "/citationdate" + optionalQueryParam);
3686+
return response;
3687+
}
3688+
36753689
static Response getFileCitation(Integer fileId, String datasetVersion, String apiToken) {
36763690
Boolean includeDeaccessioned = null;
36773691
return getFileCitation(fileId, datasetVersion, includeDeaccessioned, apiToken);

0 commit comments

Comments
 (0)