@@ -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