Skip to content

Commit c6b1bcd

Browse files
committed
add new tests
1 parent 458042c commit c6b1bcd

File tree

2 files changed

+72
-18
lines changed

2 files changed

+72
-18
lines changed

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

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,21 @@ public void testCreateFeaturedItemWithDvOdbject() {
4040
UtilIT.publishDataverseViaNativeApi(dataverseAlias, apiToken);
4141
UtilIT.publishDatasetViaNativeApi(datasetId, "major", apiToken).prettyPrint();
4242

43+
// Get the created dataset so we can get the title
44+
Response getDatasetResponse = UtilIT.getDatasetVersion(datasetPersistentId, "1", apiToken);
45+
getDatasetResponse.prettyPrint();
46+
JsonPath createdDataset = JsonPath.from(getDatasetResponse.body().asString());
47+
String datasetTitle = createdDataset.getString("data.metadataBlocks.citation.fields[0].value");
48+
4349
// Test creating a featured item of type Dataset with good persistent id. Returns OK
4450
Response createFeatureItemResponse = UtilIT.createDataverseFeaturedItem(dataverseAlias, apiToken, null, 0, null, "dataset", datasetPersistentId);
4551
createFeatureItemResponse.prettyPrint();
4652
createFeatureItemResponse.then().assertThat().statusCode(OK.getStatusCode());
4753
JsonPath createdFeaturedItem = JsonPath.from(createFeatureItemResponse.body().asString());
4854
String dvObjectIdentifier = createdFeaturedItem.getString("data.dvObjectIdentifier");
4955
assertEquals(datasetPersistentId, dvObjectIdentifier);
56+
String dvObjectDisplayName = createdFeaturedItem.getString("data.dvObjectDisplayName");
57+
assertEquals(datasetTitle, dvObjectDisplayName);
5058

5159
// Test creating a featured item of type Dataverse with good dataverse alias. Returns OK
5260
createFeatureItemResponse = UtilIT.createDataverseFeaturedItem(dataverseAlias, apiToken, null, 0, null, "dataverse", dataverseAlias);
@@ -55,9 +63,12 @@ public void testCreateFeaturedItemWithDvOdbject() {
5563
createdFeaturedItem = JsonPath.from(createFeatureItemResponse.body().asString());
5664
dvObjectIdentifier = createdFeaturedItem.getString("data.dvObjectIdentifier");
5765
assertEquals(dataverseAlias, dvObjectIdentifier);
66+
dvObjectDisplayName = createdFeaturedItem.getString("data.dvObjectDisplayName");
67+
assertEquals(dataverseAlias, dvObjectDisplayName); // create dataverse sets the name = alias
5868

5969
// Upload a file
60-
String pathToFile = "scripts/search/data/tabular/50by1000.dta";
70+
String fileName = "50by1000.dta";
71+
String pathToFile = "scripts/search/data/tabular/" + fileName;
6172
Response uploadFileResponse = UtilIT.uploadFileViaNative(datasetId.toString(), pathToFile, apiToken);
6273
uploadFileResponse.prettyPrint();
6374
JsonPath uploadedFile = JsonPath.from(uploadFileResponse.body().asString());
@@ -70,6 +81,8 @@ public void testCreateFeaturedItemWithDvOdbject() {
7081
createdFeaturedItem = JsonPath.from(createFeatureItemResponse.body().asString());
7182
dvObjectIdentifier = createdFeaturedItem.getString("data.dvObjectIdentifier");
7283
assertEquals(fileId, dvObjectIdentifier);
84+
dvObjectDisplayName = createdFeaturedItem.getString("data.dvObjectDisplayName");
85+
assertEquals(fileName, dvObjectDisplayName);
7386
}
7487

7588
@Test
@@ -214,6 +227,7 @@ public void testUpdateFeaturedItem() {
214227
Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
215228
createDataverseResponse.then().assertThat().statusCode(CREATED.getStatusCode());
216229
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
230+
String dataverseName = dataverseAlias; // createRandomDataverse sets name = alias
217231
UtilIT.publishDataverseViaNativeApi(dataverseAlias, apiToken);
218232
Long featuredItemId = createFeaturedItemAndGetId(dataverseAlias, apiToken, "src/test/resources/images/coffeeshop.png");
219233

@@ -230,26 +244,26 @@ public void testUpdateFeaturedItem() {
230244

231245
// Update featured item: keep image file
232246
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 1, true, null, apiToken);
233-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 1,"custom", null);
247+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 1,"custom", null, null);
234248

235249
// Update featured item: remove image file
236250
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 2, false, null, apiToken);
237-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", null, 2,"custom", null);
251+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", null, 2,"custom", null, null);
238252

239253
// Update featured item: set new image file
240254
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 2, false, "src/test/resources/images/coffeeshop.png", apiToken);
241-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 2,"custom", null);
255+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 2,"custom", null, null);
242256

243257
// Update featured item: set malicious content which should be sanitized
244258
String unsafeContent = "<h1 class=\"rte-heading\">A title</h1><a target=\"_blank\" class=\"rte-link\" href=\"https://test.com\">link</a>";
245259
String sanitizedContent = "<h1 class=\"rte-heading\">A title</h1><a target=\"_blank\" class=\"rte-link\" href=\"https://test.com\" rel=\"noopener noreferrer nofollow\">link</a>";
246260
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, unsafeContent, 2, false, "src/test/resources/images/coffeeshop.png", apiToken);
247-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, sanitizedContent, "coffeeshop.png", 2,"custom", null);
261+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, sanitizedContent, "coffeeshop.png", 2,"custom", null, null);
248262

249263
// Update featured item: set dataverse type
250264
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle2", 3, false, null, "dataverse", dataverseAlias, apiToken);
251265
updateFeatureItemResponse.prettyPrint();
252-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, null, null, 3, "dataverse", dataverseAlias);
266+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, null, null, 3, "dataverse", dataverseAlias, dataverseName);
253267

254268
// Test mismatch between type and dvObject
255269
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle2", 3, false, null, "dataset", dataverseAlias, apiToken);
@@ -284,7 +298,7 @@ public void testUpdateFeaturedItemUnicode() {
284298
* "????????.png" but once we fix the test, "καφενείο.png" should be
285299
* asserted.
286300
*/
287-
verifyUpdatedFeaturedItem(createFeatureItemResponse, "test", "????????.png", 0,"custom", null);
301+
verifyUpdatedFeaturedItem(createFeatureItemResponse, "test", "????????.png", 0,"custom", null, null);
288302

289303
long featuredItemId = JsonPath.from(createFeatureItemResponse.body().asString()).getLong("data.id");
290304

@@ -298,15 +312,15 @@ public void testUpdateFeaturedItemUnicode() {
298312
updateFeatureItemResponse.prettyPrint();
299313
// TODO: Fix this REST Assured assertion too (see above).
300314
// The equivalent curl command: scripts/issues/11429/update-featured-item.sh
301-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "????????.png", 1,"custom", null);
315+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "????????.png", 1,"custom", null, null);
302316

303317
// remove image
304318
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 2, false, null, apiToken);
305-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", null, 2,"custom", null);
319+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", null, 2,"custom", null, null);
306320

307321
// add non-unicode image
308322
updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 2, false, coffeeShopEnglish, apiToken);
309-
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 2,"custom", null);
323+
verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 2,"custom", null, null);
310324

311325
updateFeatureItemResponse = UtilIT.deleteDataverseFeaturedItem(featuredItemId, apiToken);
312326
updateFeatureItemResponse.then().assertThat().statusCode(OK.getStatusCode());
@@ -347,14 +361,15 @@ private Long createFeaturedItemAndGetId(String dataverseAlias, String apiToken,
347361
return createdFeaturedItem.getLong("data.id");
348362
}
349363

350-
private void verifyUpdatedFeaturedItem(Response response, String expectedContent, String expectedImageFileName, int expectedDisplayOrder, String type, String dvObject) {
364+
private void verifyUpdatedFeaturedItem(Response response, String expectedContent, String expectedImageFileName, int expectedDisplayOrder, String type, String dvObject, String dvObjectDisplayName) {
351365
response.prettyPrint();
352366
response.then().assertThat()
353367
.body("data.content", equalTo(expectedContent))
354368
.body("data.imageFileName", equalTo(expectedImageFileName))
355369
.body("data.displayOrder", equalTo(expectedDisplayOrder))
356370
.body("data.type", equalTo(type))
357371
.body("data.dvObjectIdentifier", equalTo(dvObject))
372+
.body("data.dvObjectDisplayName", equalTo(dvObjectDisplayName))
358373
.statusCode(OK.getStatusCode());
359374
}
360375
}

src/test/java/edu/harvard/iq/dataverse/util/json/JsonPrinterTest.java

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ public void testMetadataBlockAnonymized() {
413413
@Test
414414
public void testDataverseFeaturedItemDataverseTest() {
415415
Dataverse dataverse = createDataverse(42);
416-
DvObject dvObject = createDataverse(1);
416+
Dataverse dvObject = createDataverse(1);
417417

418418
DataverseFeaturedItem fi = new DataverseFeaturedItem();
419419
fi.setDataverse(dataverse);
@@ -422,14 +422,18 @@ public void testDataverseFeaturedItemDataverseTest() {
422422
fi.setImageFileName("testfile");
423423

424424
fi.setDvObject("dataverse", dvObject);
425-
JsonObjectBuilder jsonObject = JsonPrinter.json(fi);
426-
425+
JsonObject jsonObject = JsonPrinter.json(fi).build();
427426
assertNotNull(jsonObject);
427+
428+
System.out.println("json: " + JsonUtil.prettyPrint(jsonObject.toString()));
429+
assertEquals(fi.getType(), jsonObject.getString("type"));
430+
assertEquals(dvObject.getAlias(), jsonObject.getString("dvObjectIdentifier"));
431+
assertEquals(dvObject.getName(), jsonObject.getString("dvObjectDisplayName"));
428432
}
429433
@Test
430434
public void testDataverseFeaturedItemDatasetTest() {
431435
Dataverse dataverse = createDataverse(42);
432-
DvObject dvObject = createDataset(1);
436+
Dataset dvObject = createDataset(1);
433437

434438
DataverseFeaturedItem fi = new DataverseFeaturedItem();
435439
fi.setDataverse(dataverse);
@@ -442,8 +446,30 @@ public void testDataverseFeaturedItemDatasetTest() {
442446
assertNotNull(jsonObject);
443447

444448
System.out.println("json: " + JsonUtil.prettyPrint(jsonObject.toString()));
445-
assertEquals("doi:10.5072/FK2/BYM3IW", jsonObject.getString("dvObjectIdentifier"));
446-
assertEquals("Dataset Tile 1", jsonObject.getString("dvObjectDisplayName"));
449+
assertEquals(fi.getType(), jsonObject.getString("type"));
450+
assertEquals(dvObject.getGlobalId().asString(), jsonObject.getString("dvObjectIdentifier"));
451+
assertEquals(dvObject.getDisplayName(), jsonObject.getString("dvObjectDisplayName"));
452+
}
453+
454+
@Test
455+
public void testDataverseFeaturedItemDatafileTest() {
456+
Dataverse dataverse = createDataverse(42);
457+
DataFile dvObject = createDatafile(1L);
458+
459+
DataverseFeaturedItem fi = new DataverseFeaturedItem();
460+
fi.setDataverse(dataverse);
461+
fi.setContent(null);
462+
fi.setDisplayOrder(0);
463+
fi.setImageFileName("testfile");
464+
465+
fi.setDvObject("datafile", dvObject);
466+
JsonObject jsonObject = JsonPrinter.json(fi).build();
467+
assertNotNull(jsonObject);
468+
469+
System.out.println("json: " + JsonUtil.prettyPrint(jsonObject.toString()));
470+
assertEquals(fi.getType(), jsonObject.getString("type"));
471+
assertEquals(dvObject.getId().toString(), jsonObject.getString("dvObjectIdentifier"));
472+
assertEquals(dvObject.getDisplayName(), jsonObject.getString("dvObjectDisplayName"));
447473

448474
assertNotNull(jsonObject);
449475
}
@@ -467,7 +493,7 @@ private Dataset createDataset(long id) {
467493
DatasetField titleField = new DatasetField();
468494
DatasetFieldType dsft = new DatasetFieldType();
469495
DatasetFieldValue dsfv = new DatasetFieldValue();
470-
dsfv.setValue("Dataset Tile " + id);
496+
dsfv.setValue("Dataset Title " + id);
471497
dsfv.setDatasetField(titleField);
472498
dsft.setName(DatasetFieldConstant.title);
473499
dsft.setFieldType(FieldType.TEXT);
@@ -484,4 +510,17 @@ private Dataset createDataset(long id) {
484510

485511
return dataset;
486512
}
513+
private DataFile createDatafile(long id) {
514+
DataFile datafile = new DataFile();
515+
datafile.setId(1L);
516+
datafile.setRestricted(false);
517+
518+
FileMetadata fm = new FileMetadata();
519+
fm.setLabel("xyz.txt");
520+
fm.setDataFile(datafile);
521+
522+
datafile.setFileMetadatas(List.of(fm));
523+
524+
return datafile;
525+
}
487526
}

0 commit comments

Comments
 (0)