@@ -702,8 +702,10 @@ public void testListMetadataBlocks() {
702702 Response setMetadataBlocksResponse = UtilIT .setMetadataBlocks (dataverseAlias , Json .createArrayBuilder ().add ("citation" ).add ("astrophysics" ), apiToken );
703703 setMetadataBlocksResponse .then ().assertThat ().statusCode (OK .getStatusCode ());
704704
705- String [] testInputLevelNames = {"geographicCoverage" , "country" };
706- Response updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInputLevelNames , apiToken );
705+ String [] testInputLevelNames = {"geographicCoverage" , "country" , "city" };
706+ boolean [] testRequiredInputLevels = {false , true , false };
707+ boolean [] testIncludedInputLevels = {false , true , true };
708+ Response updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInputLevelNames , testRequiredInputLevels , testIncludedInputLevels , apiToken );
707709 updateDataverseInputLevelsResponse .then ().assertThat ().statusCode (OK .getStatusCode ());
708710
709711 // Dataverse not found
@@ -769,6 +771,21 @@ public void testListMetadataBlocks() {
769771 assertThat (expectedAllMetadataBlockDisplayNames , hasItemInArray (actualMetadataBlockDisplayName2 ));
770772 assertThat (expectedAllMetadataBlockDisplayNames , hasItemInArray (actualMetadataBlockDisplayName3 ));
771773
774+ // Check dataset fields for the updated input levels are retrieved
775+ int geospatialMetadataBlockIndex = actualMetadataBlockDisplayName1 .equals ("Geospatial Metadata" ) ? 0 : actualMetadataBlockDisplayName2 .equals ("Geospatial Metadata" ) ? 1 : 2 ;
776+
777+ // Since the included property of geographicCoverage is set to false, we should retrieve the total number of fields minus one
778+ listMetadataBlocksResponse .then ().assertThat ()
779+ .body (String .format ("data[%d].fields.size()" , geospatialMetadataBlockIndex ), equalTo (10 ));
780+
781+ String actualMetadataField1 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.geographicCoverage.name" , geospatialMetadataBlockIndex ));
782+ String actualMetadataField2 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.country.name" , geospatialMetadataBlockIndex ));
783+ String actualMetadataField3 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.city.name" , geospatialMetadataBlockIndex ));
784+
785+ assertNull (actualMetadataField1 );
786+ assertNotNull (actualMetadataField2 );
787+ assertNotNull (actualMetadataField3 );
788+
772789 // Existent dataverse and onlyDisplayedOnCreate=true and returnDatasetFieldTypes=true
773790 listMetadataBlocksResponse = UtilIT .listMetadataBlocks (dataverseAlias , true , true , apiToken );
774791 listMetadataBlocksResponse .then ().assertThat ().statusCode (OK .getStatusCode ());
@@ -785,16 +802,18 @@ public void testListMetadataBlocks() {
785802 assertThat (expectedOnlyDisplayedOnCreateMetadataBlockDisplayNames , hasItemInArray (actualMetadataBlockDisplayName2 ));
786803
787804 // Check dataset fields for the updated input levels are retrieved
788- int geospatialMetadataBlockIndex = actualMetadataBlockDisplayName2 .equals ("Geospatial Metadata" ) ? 1 : 0 ;
805+ geospatialMetadataBlockIndex = actualMetadataBlockDisplayName2 .equals ("Geospatial Metadata" ) ? 1 : 0 ;
789806
790807 listMetadataBlocksResponse .then ().assertThat ()
791- .body (String .format ("data[%d].fields.size()" , geospatialMetadataBlockIndex ), equalTo (2 ));
808+ .body (String .format ("data[%d].fields.size()" , geospatialMetadataBlockIndex ), equalTo (1 ));
792809
793- String actualMetadataField1 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.geographicCoverage.name" , geospatialMetadataBlockIndex ));
794- String actualMetadataField2 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.country.name" , geospatialMetadataBlockIndex ));
810+ actualMetadataField1 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.geographicCoverage.name" , geospatialMetadataBlockIndex ));
811+ actualMetadataField2 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.country.name" , geospatialMetadataBlockIndex ));
812+ actualMetadataField3 = listMetadataBlocksResponse .then ().extract ().path (String .format ("data[%d].fields.city.name" , geospatialMetadataBlockIndex ));
795813
796- assertNotNull (actualMetadataField1 );
814+ assertNull (actualMetadataField1 );
797815 assertNotNull (actualMetadataField2 );
816+ assertNull (actualMetadataField3 );
798817
799818 // User has no permissions on the requested dataverse
800819 Response createSecondUserResponse = UtilIT .createRandomUser ();
@@ -898,12 +917,16 @@ public void testUpdateInputLevels() {
898917
899918 // Update valid input levels
900919 String [] testInputLevelNames = {"geographicCoverage" , "country" };
901- Response updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInputLevelNames , apiToken );
920+ boolean [] testRequiredInputLevels = {true , false };
921+ boolean [] testIncludedInputLevels = {true , false };
922+ Response updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInputLevelNames , testRequiredInputLevels , testIncludedInputLevels , apiToken );
923+ String actualInputLevelName = updateDataverseInputLevelsResponse .then ().extract ().path ("data.inputLevels[0].datasetFieldTypeName" );
924+ int geographicCoverageInputLevelIndex = actualInputLevelName .equals ("geographicCoverage" ) ? 0 : 1 ;
902925 updateDataverseInputLevelsResponse .then ().assertThat ()
903- .body ("data.inputLevels[0].required" , equalTo (true ))
904- .body ("data.inputLevels[0].include" , equalTo (true ))
905- .body ("data.inputLevels[1].required " , equalTo (true ))
906- .body ("data.inputLevels[1].include " , equalTo (true ))
926+ .body (String . format ( "data.inputLevels[%d].include" , geographicCoverageInputLevelIndex ) , equalTo (true ))
927+ .body (String . format ( "data.inputLevels[%d].required" , geographicCoverageInputLevelIndex ) , equalTo (true ))
928+ .body (String . format ( "data.inputLevels[%d].include " , 1 - geographicCoverageInputLevelIndex ), equalTo (false ))
929+ .body (String . format ( "data.inputLevels[%d].required " , 1 - geographicCoverageInputLevelIndex ), equalTo (false ))
907930 .statusCode (OK .getStatusCode ());
908931 String actualFieldTypeName1 = updateDataverseInputLevelsResponse .then ().extract ().path ("data.inputLevels[0].datasetFieldTypeName" );
909932 String actualFieldTypeName2 = updateDataverseInputLevelsResponse .then ().extract ().path ("data.inputLevels[1].datasetFieldTypeName" );
@@ -913,15 +936,14 @@ public void testUpdateInputLevels() {
913936
914937 // Update input levels with an invalid field type name
915938 String [] testInvalidInputLevelNames = {"geographicCoverage" , "invalid1" };
916- updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInvalidInputLevelNames , apiToken );
939+ updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInvalidInputLevelNames , testRequiredInputLevels , testIncludedInputLevels , apiToken );
917940 updateDataverseInputLevelsResponse .then ().assertThat ()
918941 .body ("message" , equalTo ("Invalid dataset field type name: invalid1" ))
919942 .statusCode (BAD_REQUEST .getStatusCode ());
920943
921944 // Update invalid empty input levels
922945 testInputLevelNames = new String []{};
923- updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInputLevelNames , apiToken );
924- updateDataverseInputLevelsResponse .prettyPrint ();
946+ updateDataverseInputLevelsResponse = UtilIT .updateDataverseInputLevels (dataverseAlias , testInputLevelNames , testRequiredInputLevels , testIncludedInputLevels , apiToken );
925947 updateDataverseInputLevelsResponse .then ().assertThat ()
926948 .body ("message" , equalTo ("Error while updating dataverse input levels: Input level list cannot be null or empty" ))
927949 .statusCode (INTERNAL_SERVER_ERROR .getStatusCode ());
0 commit comments