@@ -3944,6 +3944,57 @@ public void testCurationStatusAPIs() {
39443944 Response setInvalidStatus = UtilIT .setDatasetCurationLabel (datasetId , apiToken , "Invalid Status" );
39453945 setInvalidStatus .then ().assertThat ().statusCode (BAD_REQUEST .getStatusCode ());
39463946
3947+ // Publish the dataset
3948+ UtilIT .publishDatasetViaNativeApi (datasetId , "major" , apiToken ).then ().assertThat ()
3949+ .statusCode (OK .getStatusCode ());
3950+
3951+ // Verify that the current curation label is now empty after publishing
3952+ Response getStatusAfterPublish = UtilIT .getDatasetCurationStatus (datasetId , apiToken , false );
3953+ getStatusAfterPublish .then ().assertThat ().statusCode (OK .getStatusCode ());
3954+ JsonObject statusAfterPublish = Json .createReader (new StringReader (getStatusAfterPublish .body ().asString ())).readObject ();
3955+ JsonObject dataObject = statusAfterPublish .getJsonObject ("data" );
3956+ assertFalse (dataObject .containsKey ("label" ), "Curation label should be empty after publishing" );
3957+
3958+ // Add a new valid curation label
3959+ Response setNewStatus = UtilIT .setDatasetCurationLabel (datasetId , apiToken , "State 2" );
3960+ setNewStatus .then ().assertThat ().statusCode (OK .getStatusCode ());
3961+
3962+ // Verify the label was set
3963+ Response getStatusAfterSet = UtilIT .getDatasetCurationStatus (datasetId , apiToken , false );
3964+ getStatusAfterSet .then ().assertThat ().statusCode (OK .getStatusCode ());
3965+ JsonObject statusAfterSet = Json .createReader (new StringReader (getStatusAfterSet .body ().asString ())).readObject ();
3966+ assertEquals ("State 2" , statusAfterSet .getString ("label" ), "Curation label should be set to State 2" );
3967+
3968+ // Publish the dataset again using updatecurrent as superuser
3969+ Response updateCurrentResponse = UtilIT .publishDatasetViaNativeApi (datasetId , "updatecurrent" , apiToken );
3970+ updateCurrentResponse .then ().assertThat ().statusCode (OK .getStatusCode ());
3971+
3972+ // Verify that the current curation label is now empty after updatecurrent
3973+ Response getStatusAfterUpdateCurrent = UtilIT .getDatasetCurationStatus (datasetId , apiToken , false );
3974+ getStatusAfterUpdateCurrent .then ().assertThat ().statusCode (OK .getStatusCode ());
3975+ JsonObject statusAfterUpdateCurrent = Json .createReader (new StringReader (getStatusAfterUpdateCurrent .body ().asString ())).readObject ();
3976+ JsonObject dataAfterUpdateCurrent = statusAfterUpdateCurrent .getJsonObject ("data" );
3977+ assertFalse (dataAfterUpdateCurrent .containsKey ("label" ), "Curation label should be empty after updatecurrent" );
3978+
3979+ // Verify that the history contains the previously added label
3980+ Response getHistoryAfterUpdateCurrent = UtilIT .getDatasetCurationStatus (datasetId , apiToken , true );
3981+ getHistoryAfterUpdateCurrent .then ().assertThat ().statusCode (OK .getStatusCode ());
3982+
3983+ // Extract the data array from the response
3984+ JsonObject responseObj = Json .createReader (new StringReader (getHistoryAfterUpdateCurrent .body ().asString ())).readObject ();
3985+ JsonArray historyAfterUpdateCurrent = responseObj .getJsonArray ("data" );
3986+
3987+ // Verify history contains the State 2 label
3988+ boolean foundState2 = false ;
3989+ for (int i = 0 ; i < historyAfterUpdateCurrent .size (); i ++) {
3990+ JsonObject entry = historyAfterUpdateCurrent .getJsonObject (i );
3991+ if (entry .containsKey ("label" ) && "State 2" .equals (entry .getString ("label" ))) {
3992+ foundState2 = true ;
3993+ break ;
3994+ }
3995+ }
3996+ assertTrue (foundState2 , "History should contain the State 2 label after updatecurrent" );
3997+
39473998 // Clean up
39483999 Response deleteDatasetResponse = UtilIT .deleteDatasetViaNativeApi (datasetId , apiToken );
39494000 assertEquals (200 , deleteDatasetResponse .getStatusCode ());
0 commit comments