@@ -1622,25 +1622,125 @@ public void testCreateFeaturedItem() {
1622
1622
.statusCode (NOT_FOUND .getStatusCode ());
1623
1623
}
1624
1624
1625
- // TODO: Complete
1626
1625
@ Test
1627
1626
public void testUpdateFeaturedItems () {
1628
1627
Response createUserResponse = UtilIT .createRandomUser ();
1629
1628
String apiToken = UtilIT .getApiTokenFromResponse (createUserResponse );
1630
1629
Response createDataverseResponse = UtilIT .createRandomDataverse (apiToken );
1631
1630
createDataverseResponse .then ().assertThat ().statusCode (CREATED .getStatusCode ());
1632
1631
String dataverseAlias = UtilIT .getAliasFromResponse (createDataverseResponse );
1632
+ String baseUri = UtilIT .getRestAssuredBaseUri ();
1633
1633
1634
1634
// Create new items
1635
- List <Long > ids = Arrays .asList (0L , 0L );
1636
- List <String > contents = Arrays .asList ("Content 1" , "Content 2" );
1637
- List <Integer > orders = Arrays .asList (1 , 2 );
1638
- List <Boolean > keepFiles = Arrays .asList (false , false );
1639
- List <String > pathsToFiles = Arrays .asList ("src/test/resources/images/coffeeshop.png" , "src/test/resources/images/coffeeshop.png" );
1635
+
1636
+ List <Long > ids = Arrays .asList (0L , 0L , 0L );
1637
+ List <String > contents = Arrays .asList ("Content 1" , "Content 2" , "Content 3" );
1638
+ List <Integer > orders = Arrays .asList (0 , 1 , 2 );
1639
+ List <Boolean > keepFiles = Arrays .asList (false , false , false );
1640
+ List <String > pathsToFiles = Arrays .asList ("src/test/resources/images/coffeeshop.png" , null , null );
1640
1641
1641
1642
Response updateDataverseFeaturedItemsResponse = UtilIT .updateDataverseFeaturedItems (dataverseAlias , ids , contents , orders , keepFiles , pathsToFiles , apiToken );
1642
- updateDataverseFeaturedItemsResponse .prettyPrint ();
1643
1643
updateDataverseFeaturedItemsResponse .then ().assertThat ()
1644
+ .body ("data.size()" , equalTo (3 ))
1645
+ .body ("data[0].content" , equalTo ("Content 1" ))
1646
+ .body ("data[0].imageFileName" , equalTo ("coffeeshop.png" ))
1647
+ .body ("data[0].imageFileUrl" , containsString (baseUri + "/api/access/dataverseFeatureItemImage/" ))
1648
+ .body ("data[0].displayOrder" , equalTo (0 ))
1649
+ .body ("data[1].content" , equalTo ("Content 2" ))
1650
+ .body ("data[1].imageFileName" , equalTo (null ))
1651
+ .body ("data[1].imageFileUrl" , equalTo (null ))
1652
+ .body ("data[1].displayOrder" , equalTo (1 ))
1653
+ .body ("data[2].content" , equalTo ("Content 3" ))
1654
+ .body ("data[2].imageFileName" , equalTo (null ))
1655
+ .body ("data[2].imageFileUrl" , equalTo (null ))
1656
+ .body ("data[2].displayOrder" , equalTo (2 ))
1657
+ .statusCode (OK .getStatusCode ());
1658
+
1659
+ Long firstItemId = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[0].id" );
1660
+ Long secondItemId = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[1].id" );
1661
+ Long thirdItemId = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[2].id" );
1662
+
1663
+ // Update first item (content, order, and keeping image), delete the rest and create new items
1664
+
1665
+ ids = Arrays .asList (firstItemId , 0L , 0L );
1666
+ contents = Arrays .asList ("Content 1 updated" , "Content 2" , "Content 3" );
1667
+ orders = Arrays .asList (1 , 0 , 2 );
1668
+ keepFiles = Arrays .asList (true , false , false );
1669
+ pathsToFiles = Arrays .asList (null , null , null );
1670
+
1671
+ updateDataverseFeaturedItemsResponse = UtilIT .updateDataverseFeaturedItems (dataverseAlias , ids , contents , orders , keepFiles , pathsToFiles , apiToken );
1672
+ updateDataverseFeaturedItemsResponse .then ().assertThat ()
1673
+ .body ("data.size()" , equalTo (3 ))
1674
+ .body ("data[0].content" , equalTo ("Content 1 updated" ))
1675
+ .body ("data[0].imageFileName" , equalTo ("coffeeshop.png" ))
1676
+ .body ("data[0].imageFileUrl" , containsString (baseUri + "/api/access/dataverseFeatureItemImage/" ))
1677
+ .body ("data[0].displayOrder" , equalTo (1 ))
1678
+ .body ("data[1].content" , equalTo ("Content 2" ))
1679
+ .body ("data[1].imageFileName" , equalTo (null ))
1680
+ .body ("data[1].imageFileUrl" , equalTo (null ))
1681
+ .body ("data[1].displayOrder" , equalTo (0 ))
1682
+ .body ("data[2].content" , equalTo ("Content 3" ))
1683
+ .body ("data[2].imageFileName" , equalTo (null ))
1684
+ .body ("data[2].imageFileUrl" , equalTo (null ))
1685
+ .body ("data[2].displayOrder" , equalTo (2 ))
1686
+ .statusCode (OK .getStatusCode ());
1687
+
1688
+ Long firstItemIdAfterUpdate = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[0].id" );
1689
+ Long secondItemIdAfterUpdate = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[1].id" );
1690
+ Long thirdItemIdAfterUpdate = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[2].id" );
1691
+
1692
+ assertEquals (firstItemId , firstItemIdAfterUpdate );
1693
+ assertNotEquals (secondItemId , secondItemIdAfterUpdate );
1694
+ assertNotEquals (thirdItemId , thirdItemIdAfterUpdate );
1695
+
1696
+ // Update first item (removing image), update second item (adding image), delete the third item and create a new item
1697
+
1698
+ ids = Arrays .asList (firstItemId , secondItemIdAfterUpdate , 0L );
1699
+ contents = Arrays .asList ("Content 1 updated" , "Content 2" , "Content 3" );
1700
+ orders = Arrays .asList (1 , 0 , 2 );
1701
+ keepFiles = Arrays .asList (false , false , false );
1702
+ pathsToFiles = Arrays .asList (null , "src/test/resources/images/coffeeshop.png" , null );
1703
+
1704
+ updateDataverseFeaturedItemsResponse = UtilIT .updateDataverseFeaturedItems (dataverseAlias , ids , contents , orders , keepFiles , pathsToFiles , apiToken );
1705
+ updateDataverseFeaturedItemsResponse .then ().assertThat ()
1706
+ .body ("data.size()" , equalTo (3 ))
1707
+ .body ("data[0].content" , equalTo ("Content 1 updated" ))
1708
+ .body ("data[0].imageFileName" , equalTo (null ))
1709
+ .body ("data[0].imageFileUrl" , equalTo (null ))
1710
+ .body ("data[0].displayOrder" , equalTo (1 ))
1711
+ .body ("data[1].content" , equalTo ("Content 2" ))
1712
+ .body ("data[1].imageFileName" , equalTo ("coffeeshop.png" ))
1713
+ .body ("data[1].imageFileUrl" , containsString (baseUri + "/api/access/dataverseFeatureItemImage/" ))
1714
+ .body ("data[1].displayOrder" , equalTo (0 ))
1715
+ .body ("data[2].content" , equalTo ("Content 3" ))
1716
+ .body ("data[2].imageFileName" , equalTo (null ))
1717
+ .body ("data[2].imageFileUrl" , equalTo (null ))
1718
+ .body ("data[2].displayOrder" , equalTo (2 ))
1719
+ .statusCode (OK .getStatusCode ());
1720
+
1721
+ Long firstItemIdAftersSecondUpdate = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[0].id" );
1722
+ Long secondItemIdAfterSecondUpdate = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[1].id" );
1723
+ Long thirdItemIdAfterSecondUpdate = JsonPath .from (updateDataverseFeaturedItemsResponse .body ().asString ()).getLong ("data[2].id" );
1724
+
1725
+ assertEquals (firstItemId , firstItemIdAftersSecondUpdate );
1726
+ assertEquals (secondItemIdAfterUpdate , secondItemIdAfterSecondUpdate );
1727
+ assertNotEquals (thirdItemIdAfterUpdate , thirdItemIdAfterSecondUpdate );
1728
+
1729
+ // Only keep first featured item
1730
+
1731
+ ids = List .of (firstItemId );
1732
+ contents = List .of ("Content 1 updated" );
1733
+ orders = List .of (0 );
1734
+ keepFiles = List .of (false );
1735
+ pathsToFiles = null ;
1736
+
1737
+ updateDataverseFeaturedItemsResponse = UtilIT .updateDataverseFeaturedItems (dataverseAlias , ids , contents , orders , keepFiles , pathsToFiles , apiToken );
1738
+ updateDataverseFeaturedItemsResponse .then ().assertThat ()
1739
+ .body ("data.size()" , equalTo (1 ))
1740
+ .body ("data[0].content" , equalTo ("Content 1 updated" ))
1741
+ .body ("data[0].imageFileName" , equalTo (null ))
1742
+ .body ("data[0].imageFileUrl" , equalTo (null ))
1743
+ .body ("data[0].displayOrder" , equalTo (0 ))
1644
1744
.statusCode (OK .getStatusCode ());
1645
1745
}
1646
1746
}
0 commit comments