Skip to content

Commit 172a700

Browse files
committed
add test to create dataset and local review of it #12313
1 parent 6a144ac commit 172a700

1 file changed

Lines changed: 211 additions & 0 deletions

File tree

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

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package edu.harvard.iq.dataverse.api;
22

3+
import static edu.harvard.iq.dataverse.api.ApiConstants.DS_VERSION_LATEST_PUBLISHED;
4+
35
import edu.harvard.iq.dataverse.dataset.DatasetType;
6+
import edu.harvard.iq.dataverse.util.StringUtil;
47
import edu.harvard.iq.dataverse.util.json.JsonUtil;
58
import edu.harvard.iq.dataverse.util.json.NullSafeJsonBuilder;
69
import io.restassured.RestAssured;
@@ -344,4 +347,212 @@ public void testCreateReviewRequiredFields() {
344347

345348
}
346349

350+
@Test
351+
public void testLocalReviews() {
352+
353+
Response createUserDatasetAuthor = UtilIT.createRandomUser();
354+
createUserDatasetAuthor.prettyPrint();
355+
createUserDatasetAuthor.then().assertThat()
356+
.statusCode(OK.getStatusCode());
357+
String usernameDatasetAuthor = UtilIT.getUsernameFromResponse(createUserDatasetAuthor);
358+
String apiTokenDatasetAuthor = UtilIT.getApiTokenFromResponse(createUserDatasetAuthor);
359+
360+
Response createCollectionOfDatasets = UtilIT.createRandomDataverse(apiTokenDatasetAuthor);
361+
createCollectionOfDatasets.prettyPrint();
362+
createCollectionOfDatasets.then().assertThat()
363+
.statusCode(CREATED.getStatusCode());
364+
365+
String collectionAliasDatasets = UtilIT.getAliasFromResponse(createCollectionOfDatasets);
366+
String datasetJson = """
367+
{
368+
"http://purl.org/dc/terms/title": "Pediatric Asthma",
369+
"http://purl.org/dc/terms/creator": {
370+
"https://dataverse.org/schema/citation/authorName": "Sullivan, James"
371+
},
372+
"https://dataverse.org/schema/citation/datasetContact": {
373+
"https://dataverse.org/schema/citation/datasetContactEmail": "sully@mailinator.com"
374+
},
375+
"https://dataverse.org/schema/citation/dsDescription": {
376+
"https://dataverse.org/schema/citation/dsDescriptionValue": "A dataset about pediatric asthma."
377+
},
378+
"http://purl.org/dc/terms/subject": "Medicine, Health and Life Sciences"
379+
}
380+
""";
381+
382+
Response createDataset = UtilIT.createDatasetSemantic(collectionAliasDatasets, datasetJson,
383+
apiTokenDatasetAuthor);
384+
createDataset.prettyPrint();
385+
createDataset.then().assertThat().statusCode(CREATED.getStatusCode());
386+
387+
Integer datasetId = UtilIT.getDatasetIdFromResponse(createDataset);
388+
String datasetPid = UtilIT.getDatasetPersistentIdFromResponse(createDataset);
389+
390+
Response setLicensetoCC0 = UtilIT.updateLicense(datasetId.toString(), "{ \"name\": \"CC0 1.0\" }",
391+
apiTokenDatasetAuthor);
392+
setLicensetoCC0.prettyPrint();
393+
setLicensetoCC0.then().assertThat().statusCode(OK.getStatusCode());
394+
395+
Response publishCollection = UtilIT.publishDataverseViaNativeApi(collectionAliasDatasets,
396+
apiTokenDatasetAuthor);
397+
// publishCollection.prettyPrint();
398+
publishCollection.then().assertThat()
399+
.statusCode(OK.getStatusCode());
400+
401+
Response publishDataset = UtilIT.publishDatasetViaNativeApi(datasetId, "major", apiTokenDatasetAuthor);
402+
publishDataset.prettyPrint();
403+
publishDataset.then().assertThat()
404+
.statusCode(OK.getStatusCode());
405+
406+
Response createUserReviewer = UtilIT.createRandomUser();
407+
createUserReviewer.prettyPrint();
408+
createUserReviewer.then().assertThat()
409+
.statusCode(OK.getStatusCode());
410+
String usernameReviewer = UtilIT.getUsernameFromResponse(createUserReviewer);
411+
String apiTokenReviewer = UtilIT.getApiTokenFromResponse(createUserReviewer);
412+
413+
Response getDataset = UtilIT.nativeGetUsingPersistentId(datasetPid, apiTokenReviewer);
414+
getDataset.prettyPrint();
415+
getDataset.then().assertThat().statusCode(OK.getStatusCode());
416+
417+
String datasetPersistentUrl = JsonPath.from(getDataset.body().asString()).getString("data.persistentUrl");
418+
String datasetTitle = JsonPath.from(getDataset.body().asString())
419+
.getString("data.latestVersion.metadataBlocks.citation.fields[0].value");
420+
421+
Response getCitation = UtilIT.getDatasetVersionCitation(datasetId, DS_VERSION_LATEST_PUBLISHED, false,
422+
apiTokenReviewer);
423+
getCitation.prettyPrint();
424+
getCitation.then().assertThat().statusCode(OK.getStatusCode());
425+
String datasetCitationHtml = JsonPath.from(getCitation.getBody().asString()).getString("data.message");
426+
String datasetCitationText = StringUtil.html2text(datasetCitationHtml);
427+
428+
Response createCollectionOfReviews = UtilIT.createRandomDataverse(apiTokenReviewer);
429+
createCollectionOfReviews.prettyPrint();
430+
createCollectionOfReviews.then().assertThat()
431+
.statusCode(CREATED.getStatusCode());
432+
433+
String collectionAliasReviews = UtilIT.getAliasFromResponse(createCollectionOfReviews);
434+
435+
Response setAllowedDatasetTypes = UtilIT.setCollectionAttribute(collectionAliasReviews, "allowedDatasetTypes",
436+
"review", apiTokenSuperuser);
437+
setAllowedDatasetTypes.prettyPrint();
438+
setAllowedDatasetTypes.then().assertThat()
439+
.statusCode(OK.getStatusCode())
440+
.body("data.allowedDatasetTypes[0].name", is("review"))
441+
.body("data.allowedDatasetTypes[0].displayName", is("Review"))
442+
.body("data.allowedDatasetTypes[0].description",
443+
is("A review of a dataset compiled by the expert community."));
444+
445+
String itemReviewedTitle = datasetTitle;
446+
String itemReviewedUrl = datasetPersistentUrl;
447+
String itemReviewedCitation = datasetCitationHtml;
448+
String reviewTitle = "Review of " + itemReviewedTitle;
449+
String authorName = "Wazowski, Mike";
450+
String authorEmail = "mwazowski@mailinator.com";
451+
JsonObjectBuilder jsonForCreatingReview = Json.createObjectBuilder()
452+
/**
453+
* See above where this type is added to the installation and
454+
* therefore available for use.
455+
*/
456+
.add("datasetType", DatasetType.DATASET_TYPE_REVIEW)
457+
.add("datasetVersion", Json.createObjectBuilder()
458+
.add("license", Json.createObjectBuilder()
459+
.add("name", "CC0 1.0")
460+
.add("uri", "http://creativecommons.org/publicdomain/zero/1.0"))
461+
.add("metadataBlocks", Json.createObjectBuilder()
462+
.add("citation", Json.createObjectBuilder()
463+
.add("fields", Json.createArrayBuilder()
464+
.add(Json.createObjectBuilder()
465+
.add("typeName", "title")
466+
.add("value", reviewTitle)
467+
.add("typeClass", "primitive")
468+
.add("multiple", false))
469+
.add(Json.createObjectBuilder()
470+
.add("value", Json.createArrayBuilder()
471+
.add(Json.createObjectBuilder()
472+
.add("authorName",
473+
Json.createObjectBuilder()
474+
.add("value", authorName)
475+
.add("typeClass", "primitive")
476+
.add("multiple", false)
477+
.add("typeName",
478+
"authorName"))))
479+
.add("typeClass", "compound")
480+
.add("multiple", true)
481+
.add("typeName", "author"))
482+
.add(Json.createObjectBuilder()
483+
.add("value", Json.createArrayBuilder()
484+
.add(Json.createObjectBuilder()
485+
.add("datasetContactEmail",
486+
Json.createObjectBuilder()
487+
.add("value", authorEmail)
488+
.add("typeClass", "primitive")
489+
.add("multiple", false)
490+
.add("typeName",
491+
"datasetContactEmail"))))
492+
.add("typeClass", "compound")
493+
.add("multiple", true)
494+
.add("typeName", "datasetContact"))
495+
.add(Json.createObjectBuilder()
496+
.add("value", Json.createArrayBuilder()
497+
.add(Json.createObjectBuilder()
498+
.add("dsDescriptionValue",
499+
Json.createObjectBuilder()
500+
.add("value",
501+
"This is a review of a dataset.")
502+
.add("typeClass", "primitive")
503+
.add("multiple", false)
504+
.add("typeName",
505+
"dsDescriptionValue"))))
506+
.add("typeClass", "compound")
507+
.add("multiple", true)
508+
.add("typeName", "dsDescription"))
509+
.add(Json.createObjectBuilder()
510+
.add("value", Json.createArrayBuilder()
511+
.add("Medicine, Health and Life Sciences"))
512+
.add("typeClass", "controlledVocabulary")
513+
.add("multiple", true)
514+
.add("typeName", "subject"))
515+
.add(Json.createObjectBuilder()
516+
.add("value", Json.createObjectBuilder()
517+
.add("itemReviewedUrl",
518+
Json.createObjectBuilder()
519+
.add("value", itemReviewedUrl)
520+
.add("typeClass", "primitive")
521+
.add("multiple", false)
522+
.add("typeName", "itemReviewedUrl"))
523+
.add("itemReviewedType",
524+
Json.createObjectBuilder()
525+
.add("value", "Dataset")
526+
.add("typeClass",
527+
"controlledVocabulary")
528+
.add("multiple", false)
529+
.add("typeName", "itemReviewedType"))
530+
.add("itemReviewedCitation",
531+
Json.createObjectBuilder()
532+
.add("value", itemReviewedCitation)
533+
.add("typeClass", "primitive")
534+
.add("multiple", false)
535+
.add("typeName",
536+
"itemReviewedCitation")))
537+
.add("typeClass", "compound")
538+
.add("multiple", false)
539+
.add("typeName", "itemReviewed"))))));
540+
541+
Response createReview = UtilIT.createDataset(collectionAliasReviews, jsonForCreatingReview, apiTokenReviewer);
542+
createReview.prettyPrint();
543+
createReview.then().assertThat().statusCode(CREATED.getStatusCode());
544+
Integer reviewId = UtilIT.getDatasetIdFromResponse(createReview);
545+
String reviewPid = JsonPath.from(createReview.getBody().asString()).getString("data.persistentId");
546+
547+
Response publishCollectionReviews = UtilIT.publishDataverseViaNativeApi(collectionAliasReviews,
548+
apiTokenReviewer);
549+
publishCollectionReviews.then().assertThat()
550+
.statusCode(OK.getStatusCode());
551+
552+
Response publishReview = UtilIT.publishDatasetViaNativeApi(reviewId, "major", apiTokenReviewer);
553+
publishReview.then().assertThat()
554+
.statusCode(OK.getStatusCode());
555+
556+
}
557+
347558
}

0 commit comments

Comments
 (0)