@@ -37,6 +37,16 @@ public void testCreateFeaturedItemWithDvOdbject() {
3737 Response createDatasetResponse = UtilIT .createRandomDatasetViaNativeApi (dataverseAlias , apiToken );
3838 String datasetPersistentId = UtilIT .getDatasetPersistentIdFromResponse (createDatasetResponse );
3939 Integer datasetId = UtilIT .getDatasetIdFromResponse (createDatasetResponse );
40+ // Upload a file
41+ String fileName = "50by1000.dta" ;
42+ String pathToFile = "scripts/search/data/tabular/" + fileName ;
43+ Response uploadFileResponse = UtilIT .uploadFileViaNative (datasetId .toString (), pathToFile , apiToken );
44+ uploadFileResponse .prettyPrint ();
45+ JsonPath uploadedFile = JsonPath .from (uploadFileResponse .body ().asString ());
46+ String fileId = String .valueOf (uploadedFile .getInt ("data.files[0].dataFile.id" ));
47+ assertTrue (UtilIT .sleepForLock (datasetId , "Ingest" , apiToken , UtilIT .MAXIMUM_INGEST_LOCK_DURATION ), "Failed test if Ingest Lock exceeds max duration" );
48+
49+ // Publish Dataverse and Dataset with Datafile
4050 UtilIT .publishDataverseViaNativeApi (dataverseAlias , apiToken );
4151 UtilIT .publishDatasetViaNativeApi (datasetId , "major" , apiToken ).prettyPrint ();
4252
@@ -66,14 +76,6 @@ public void testCreateFeaturedItemWithDvOdbject() {
6676 dvObjectDisplayName = createdFeaturedItem .getString ("data.dvObjectDisplayName" );
6777 assertEquals (dataverseAlias , dvObjectDisplayName ); // create dataverse sets the name = alias
6878
69- // Upload a file
70- String fileName = "50by1000.dta" ;
71- String pathToFile = "scripts/search/data/tabular/" + fileName ;
72- Response uploadFileResponse = UtilIT .uploadFileViaNative (datasetId .toString (), pathToFile , apiToken );
73- uploadFileResponse .prettyPrint ();
74- JsonPath uploadedFile = JsonPath .from (uploadFileResponse .body ().asString ());
75- String fileId = String .valueOf (uploadedFile .getInt ("data.files[0].dataFile.id" ));
76-
7779 // Test creating a featured item of type Datafile with good file id. Returns OK
7880 createFeatureItemResponse = UtilIT .createDataverseFeaturedItem (dataverseAlias , apiToken , null , 0 , null , "datafile" , fileId );
7981 createFeatureItemResponse .prettyPrint ();
@@ -82,7 +84,8 @@ public void testCreateFeaturedItemWithDvOdbject() {
8284 dvObjectIdentifier = createdFeaturedItem .getString ("data.dvObjectIdentifier" );
8385 assertEquals (fileId , dvObjectIdentifier );
8486 dvObjectDisplayName = createdFeaturedItem .getString ("data.dvObjectDisplayName" );
85- assertEquals (fileName , dvObjectDisplayName );
87+ String tabFileNameConvert = fileName .substring (0 , fileName .indexOf (".dta" )) + ".tab" ;
88+ assertEquals (tabFileNameConvert , dvObjectDisplayName );
8689 }
8790
8891 @ Test
@@ -153,6 +156,43 @@ public void testUnpublishedPublishedDatasetFeatureItem() {
153156 .statusCode (OK .getStatusCode ());
154157 }
155158
159+ @ Test
160+ public void testUnpublishedPublishedDataFileFeatureItem () {
161+ // Set up a new dataverse and dataset without publishing
162+ String apiToken = createUserAndGetApiToken ();
163+ String dataverseAlias = createDataverseAndGetAlias (apiToken );
164+ UtilIT .publishDataverseViaNativeApi (dataverseAlias , apiToken );
165+ Response createDatasetResponse = UtilIT .createRandomDatasetViaNativeApi (dataverseAlias , apiToken );
166+ createDatasetResponse .prettyPrint ();
167+ String datasetPersistentId = UtilIT .getDatasetPersistentIdFromResponse (createDatasetResponse );
168+ Integer datasetId = UtilIT .getDatasetIdFromResponse (createDatasetResponse );
169+
170+ // Upload a file to be a Featured Item
171+ String fileName = "50by1000.dta" ;
172+ String pathToFile = "scripts/search/data/tabular/" + fileName ;
173+ Response uploadFileResponse = UtilIT .uploadFileViaNative (datasetId .toString (), pathToFile , apiToken );
174+ uploadFileResponse .prettyPrint ();
175+ JsonPath uploadedFile = JsonPath .from (uploadFileResponse .body ().asString ());
176+ String fileId = String .valueOf (uploadedFile .getInt ("data.files[0].dataFile.id" ));
177+ assertTrue (UtilIT .sleepForLock (datasetId , "Ingest" , apiToken , UtilIT .MAXIMUM_INGEST_LOCK_DURATION ), "Failed test if Ingest Lock exceeds max duration" );
178+
179+ // Test creating a featured item of type Datafile. Returns Bad request due to the dataset not being published
180+ Response createFeatureItemResponse = UtilIT .createDataverseFeaturedItem (dataverseAlias , apiToken , null , 0 , null , "datafile" , fileId );
181+ createFeatureItemResponse .prettyPrint ();
182+ createFeatureItemResponse .then ().assertThat ()
183+ .statusCode (BAD_REQUEST .getStatusCode ())
184+ .body ("message" , equalTo (BundleUtil .getStringFromBundle ("dataverseFeaturedItems.errors.notPublished" , List .of ("Dataset" ))));
185+
186+ // Publish the Dataset
187+ UtilIT .publishDatasetViaNativeApi (datasetPersistentId , "major" , apiToken ).prettyPrint ();
188+
189+ // Test creating a featured item of type DataFile. Returns OK due to the dataset being published
190+ createFeatureItemResponse = UtilIT .createDataverseFeaturedItem (dataverseAlias , apiToken , null , 0 , null , "datafile" , fileId );
191+ createFeatureItemResponse .prettyPrint ();
192+ createFeatureItemResponse .then ().assertThat ()
193+ .statusCode (OK .getStatusCode ());
194+ }
195+
156196 @ Test
157197 public void testRestrictedUnrestrictedDatafileFeatureItem () {
158198 // Set up a new dataverse and dataset without publishing
@@ -162,7 +202,6 @@ public void testRestrictedUnrestrictedDatafileFeatureItem() {
162202 Response createDatasetResponse = UtilIT .createRandomDatasetViaNativeApi (dataverseAlias , apiToken );
163203 createDatasetResponse .prettyPrint ();
164204 String datasetId = String .valueOf (UtilIT .getDatasetIdFromResponse (createDatasetResponse ));
165- UtilIT .publishDatasetViaNativeApi (datasetId , "major" , apiToken ).prettyPrint ();
166205
167206 // Upload a file
168207 String pathToFile = "scripts/search/data/tabular/50by1000.dta" ;
@@ -175,6 +214,9 @@ public void testRestrictedUnrestrictedDatafileFeatureItem() {
175214 // Restrict the file
176215 UtilIT .restrictFile (fileId , true , apiToken ).prettyPrint ();
177216
217+ // Publish the Dataset with the uploaded file
218+ UtilIT .publishDatasetViaNativeApi (datasetId , "major" , apiToken ).prettyPrint ();
219+
178220 // Test creating a featured item of type Datafile with good file id. Returns Bad request due to the datafile being restricted
179221 Response createFeatureItemResponse = UtilIT .createDataverseFeaturedItem (dataverseAlias , apiToken , null , 0 , null , "datafile" , fileId );
180222 createFeatureItemResponse .prettyPrint ();
@@ -184,6 +226,8 @@ public void testRestrictedUnrestrictedDatafileFeatureItem() {
184226
185227 // Un-restrict the file
186228 UtilIT .restrictFile (fileId , false , apiToken ).prettyPrint ();
229+ // Publish the Dataset with the unrestricted file
230+ UtilIT .publishDatasetViaNativeApi (datasetId , "minor" , apiToken ).prettyPrint ();
187231
188232 // Test creating a featured item of type Datafile with good file id. Returns OK request due to the datafile being un-restricted
189233 createFeatureItemResponse = UtilIT .createDataverseFeaturedItem (dataverseAlias , apiToken , null , 0 , null , "datafile" , fileId );
0 commit comments