Skip to content

Commit f66fa60

Browse files
committed
add test for required fields in a metadata block tsv #11747
1 parent 169aa00 commit f66fa60

1 file changed

Lines changed: 111 additions & 0 deletions

File tree

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

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,115 @@ public void testCreateReview() {
225225

226226
}
227227

228+
/**
229+
* In this test, we check if temReviewedUrl and itemReviewedType are required. (They are subfields of itemReviewed.) In review.tsv they are set to required.
230+
*/
231+
@Test
232+
public void testCreateReviewRequiredFields() {
233+
234+
Response createUser = UtilIT.createRandomUser();
235+
createUser.prettyPrint();
236+
createUser.then().assertThat()
237+
.statusCode(OK.getStatusCode());
238+
String username = UtilIT.getUsernameFromResponse(createUser);
239+
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
240+
241+
Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
242+
createDataverseResponse.prettyPrint();
243+
createDataverseResponse.then().assertThat()
244+
.statusCode(CREATED.getStatusCode());
245+
246+
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
247+
248+
Response setAllowedDatasetTypes = UtilIT.setCollectionAttribute(dataverseAlias, "allowedDatasetTypes",
249+
"review", apiTokenSuperuser);
250+
setAllowedDatasetTypes.prettyPrint();
251+
setAllowedDatasetTypes.then().assertThat()
252+
.statusCode(OK.getStatusCode())
253+
.body("data.allowedDatasetTypes[0].name", is("review"))
254+
.body("data.allowedDatasetTypes[0].displayName", is("Review"))
255+
.body("data.allowedDatasetTypes[0].description",
256+
is("A review of a dataset compiled by the expert community."));
257+
258+
String itemReviewedTitle = "Percent of Children That Have Asthma";
259+
String itemReviewedUrl = "https://datacommons.org/tools/statvar#sv=Percent_Person_Children_WithAsthma";
260+
String reviewTitle = "Review of " + itemReviewedTitle;
261+
String authorName = "Wazowski, Mike";
262+
String authorEmail = "mwazowski@mailinator.com";
263+
JsonObjectBuilder jsonForCreatingReview = Json.createObjectBuilder()
264+
/**
265+
* See above where this type is added to the installation and
266+
* therefore available for use.
267+
*/
268+
.add("datasetType", DatasetType.DATASET_TYPE_REVIEW)
269+
.add("datasetVersion", Json.createObjectBuilder()
270+
.add("license", Json.createObjectBuilder()
271+
.add("name", "CC0 1.0")
272+
.add("uri", "http://creativecommons.org/publicdomain/zero/1.0"))
273+
.add("metadataBlocks", Json.createObjectBuilder()
274+
.add("citation", Json.createObjectBuilder()
275+
.add("fields", Json.createArrayBuilder()
276+
.add(Json.createObjectBuilder()
277+
.add("typeName", "title")
278+
.add("value", reviewTitle)
279+
.add("typeClass", "primitive")
280+
.add("multiple", false))
281+
.add(Json.createObjectBuilder()
282+
.add("value", Json.createArrayBuilder()
283+
.add(Json.createObjectBuilder()
284+
.add("authorName",
285+
Json.createObjectBuilder()
286+
.add("value", authorName)
287+
.add("typeClass", "primitive")
288+
.add("multiple", false)
289+
.add("typeName",
290+
"authorName"))))
291+
.add("typeClass", "compound")
292+
.add("multiple", true)
293+
.add("typeName", "author"))
294+
.add(Json.createObjectBuilder()
295+
.add("value", Json.createArrayBuilder()
296+
.add(Json.createObjectBuilder()
297+
.add("datasetContactEmail",
298+
Json.createObjectBuilder()
299+
.add("value", authorEmail)
300+
.add("typeClass", "primitive")
301+
.add("multiple", false)
302+
.add("typeName",
303+
"datasetContactEmail"))))
304+
.add("typeClass", "compound")
305+
.add("multiple", true)
306+
.add("typeName", "datasetContact"))
307+
.add(Json.createObjectBuilder()
308+
.add("value", Json.createArrayBuilder()
309+
.add(Json.createObjectBuilder()
310+
.add("dsDescriptionValue",
311+
Json.createObjectBuilder()
312+
.add("value",
313+
"This is a review of a dataset.")
314+
.add("typeClass", "primitive")
315+
.add("multiple", false)
316+
.add("typeName",
317+
"dsDescriptionValue"))))
318+
.add("typeClass", "compound")
319+
.add("multiple", true)
320+
.add("typeName", "dsDescription"))
321+
.add(Json.createObjectBuilder()
322+
.add("value", Json.createArrayBuilder()
323+
.add("Medicine, Health and Life Sciences"))
324+
.add("typeClass", "controlledVocabulary")
325+
.add("multiple", true)
326+
.add("typeName", "subject"))))));
327+
328+
Response createReview = UtilIT.createDataset(dataverseAlias, jsonForCreatingReview, apiToken);
329+
createReview.prettyPrint();
330+
// FIXME: The review was created but it shouldn't have been because
331+
// required fields were not supplied. In review.tsv both
332+
// itemReviewedUrl and itemReviewedType are required.
333+
createReview.then().assertThat().statusCode(CREATED.getStatusCode());
334+
Integer reviewId = UtilIT.getDatasetIdFromResponse(createReview);
335+
String reviewPid = JsonPath.from(createReview.getBody().asString()).getString("data.persistentId");
336+
337+
}
338+
228339
}

0 commit comments

Comments
 (0)