1919import  kendogrid .components .GridFilter ;
2020import  kendogrid .components .GridItem ;
2121import  kendogrid .components .KendoGrid ;
22+ import  kendogrid .reuse .GridColumns ;
2223import  org .openqa .selenium .*;
2324import  org .openqa .selenium .chrome .ChromeDriver ;
2425import  org .openqa .selenium .support .ui .WebDriverWait ;
2930import  org .testng .annotations .Test ;
3031
3132import  java .util .List ;
33+ import  java .util .UUID ;
3234import  java .util .concurrent .TimeUnit ;
3335
3436import  static  java .lang .System .getProperty ;
@@ -67,7 +69,7 @@ public void afterClass() {
6769    // OrderID Test Cases (Unique Identifier Type Column Test Cases)/ OrderID Test Cases 
6870    @ Test 
6971    public  void  orderIdEqualToFilter () throws  Exception  {
70-         var  newItem  = CreateNewItemInDb ();
72+         var  newItem  = createNewItemInDb ();
7173
7274        kendoGrid .filter (OrderIdColumnName , FilterOperator .EQUAL_TO , newItem .getOrderId ());
7375        waitForGridToLoad (1 , kendoGrid );
@@ -79,10 +81,10 @@ public void orderIdEqualToFilter() throws Exception {
7981    @ Test 
8082    public  void  orderIdGreaterThanOrEqualToFilter () throws  Exception  {
8183        // Create new item with unique ship name; 
82-         var  newItem  = CreateNewItemInDb ();
84+         var  newItem  = createNewItemInDb ();
8385
8486        // Create second new item with the same unique shipping name 
85-         var  secondNewItem  = CreateNewItemInDb (newItem .getShipName ());
87+         var  secondNewItem  = createNewItemInDb (newItem .getShipName ());
8688
8789        // When we filter by the second unique column ShippingName, only one item will be displayed. Once we apply the second not equal to filter the grid should be empty. 
8890        kendoGrid .filter (
@@ -100,10 +102,10 @@ public void orderIdGreaterThanOrEqualToFilter() throws Exception {
100102    @ Test 
101103    public  void  orderIdGreaterThanFilter () throws  Exception  {
102104        // Create new item with unique ship name; 
103-         var  newItem  = CreateNewItemInDb ();
105+         var  newItem  = createNewItemInDb ();
104106
105107        // Create second new item with the same unique shipping name 
106-         var  secondNewItem  = CreateNewItemInDb (newItem .getShipName ());
108+         var  secondNewItem  = createNewItemInDb (newItem .getShipName ());
107109
108110        // Filter by the smaller orderId but also by the second unique column in this case shipping name 
109111        kendoGrid .filter (
@@ -119,10 +121,10 @@ public void orderIdGreaterThanFilter() throws Exception {
119121    @ Test 
120122    public  void  orderIdLessThanOrEqualToFilter () throws  Exception  {
121123        // Create new item with unique ship name; 
122-         var  newItem  = CreateNewItemInDb ();
124+         var  newItem  = createNewItemInDb ();
123125
124126        // Create second new item with the same unique shipping name 
125-         var  secondNewItem  = CreateNewItemInDb (newItem .getShipName ());
127+         var  secondNewItem  = createNewItemInDb (newItem .getShipName ());
126128
127129        // Filter by the larger orderId but also by the second unique column in this case shipping name 
128130        kendoGrid .filter (
@@ -139,10 +141,10 @@ public void orderIdLessThanOrEqualToFilter() throws Exception {
139141    @ Test 
140142    public  void  orderIdLessThanFilter () throws  Exception  {
141143        // Create new item with unique ship name; 
142-         var  newItem  = CreateNewItemInDb ();
144+         var  newItem  = createNewItemInDb ();
143145
144146        // Create second new item with the same unique shipping name 
145-         var  secondNewItem  = CreateNewItemInDb (newItem .getShipName ());
147+         var  secondNewItem  = createNewItemInDb (newItem .getShipName ());
146148
147149        // Filter by the larger orderId but also by the second unique column in this case shipping name 
148150        kendoGrid .filter (
@@ -158,10 +160,10 @@ public void orderIdLessThanFilter() throws Exception {
158160    @ Test 
159161    public  void  orderIdNotEqualToFilter () throws  Exception  {
160162        // Create new item with unique ship name; 
161-         var  newItem  = CreateNewItemInDb ();
163+         var  newItem  = createNewItemInDb ();
162164
163165        // Create second new item with the same unique shipping name 
164-         var  secondNewItem  = CreateNewItemInDb (newItem .getShipName ());
166+         var  secondNewItem  = createNewItemInDb (newItem .getShipName ());
165167
166168        // Filter by the larger orderId but also by the second unique column in this case shipping name 
167169        kendoGrid .filter (
@@ -177,10 +179,10 @@ public void orderIdNotEqualToFilter() throws Exception {
177179    @ Test 
178180    public  void  orderIdClearFilter () throws  Exception  {
179181        // Create new item with unique ship name; 
180-         var  newItem  = CreateNewItemInDb ();
182+         var  newItem  = createNewItemInDb ();
181183
182184        // Make sure that we have at least 2 items if the grid is empty. The tests are designed to run against empty DB. 
183-         var  secondNewItem  = CreateNewItemInDb (newItem .getShipName ());
185+         var  secondNewItem  = createNewItemInDb (newItem .getShipName ());
184186
185187        kendoGrid .filter (OrderIdColumnName , FilterOperator .EQUAL_TO , newItem .getOrderId ());
186188        waitForGridToLoad (1 , kendoGrid );
@@ -192,6 +194,115 @@ public void orderIdClearFilter() throws Exception {
192194        Assert .assertTrue (results .stream ().count () > 1 );
193195    }
194196
197+     // ship name tests 
198+     @ Test 
199+     public  void  shipNameEqualToFilter () throws  Exception  {
200+         var  newItem  = createNewItemInDb ();
201+ 
202+         kendoGrid .filter (GridColumns .SHIP_NAME , FilterOperator .EQUAL_TO , newItem .getShipName ());
203+         waitForGridToLoad (1 , kendoGrid );
204+         List <GridItem > items  = kendoGrid .getItems ();
205+ 
206+         Assert .assertEquals (items .stream ().count (), 1 );
207+     }
208+ 
209+     @ Test 
210+     public  void  shipNameContainsFilter () throws  Exception  {
211+         var  shipName  = UUID .randomUUID ().toString ();
212+ 
213+         // Remove first and last letter 
214+         shipName  = removeLastChar (removeFirstChar (shipName ));
215+         var  newItem  = createNewItemInDb (shipName );
216+ 
217+         kendoGrid .filter (GridColumns .SHIP_NAME , FilterOperator .CONTAINS , newItem .getShipName ());
218+         waitForGridToLoad (1 , kendoGrid );
219+         List <GridItem > items  = kendoGrid .getItems ();
220+ 
221+         Assert .assertEquals (items .stream ().count (), 1 );
222+     }
223+ 
224+     @ Test 
225+     public  void  shipNameEndsWithFilter () throws  Exception  {
226+         // Remove first letter 
227+         var  shipName  = UUID .randomUUID ().toString ();
228+         shipName  = removeFirstChar (shipName );
229+         var  newItem  = createNewItemInDb (shipName );
230+ 
231+         kendoGrid .filter (GridColumns .SHIP_NAME , FilterOperator .ENDS_WITH , newItem .getShipName ());
232+         waitForGridToLoad (1 , kendoGrid );
233+         List <GridItem > items  = kendoGrid .getItems ();
234+ 
235+         Assert .assertEquals (items .stream ().count (), 1 );
236+     }
237+ 
238+     @ Test 
239+     public  void  shipNameStartsWithFilter () throws  Exception  {
240+         // Remove last letter 
241+         var  shipName  = UUID .randomUUID ().toString ();
242+         shipName  = removeFirstChar (shipName );
243+         var  newItem  = createNewItemInDb (shipName );
244+ 
245+         kendoGrid .filter (GridColumns .SHIP_NAME , FilterOperator .STARTS_WITH , newItem .getShipName ());
246+         waitForGridToLoad (1 , kendoGrid );
247+         List <GridItem > items  = kendoGrid .getItems ();
248+ 
249+         Assert .assertEquals (items .stream ().count (), 1 );
250+     }
251+ 
252+     @ Test 
253+     public  void  shipNameNotEqualToFilter () throws  Exception  {
254+         // Apply combined filter. First filter by ID and than by ship name (not equal filter). 
255+         // After the first filter there is only one element when we apply the second we expect 0 elements. 
256+         var  newItem  = createNewItemInDb ();
257+ 
258+         kendoGrid .filter (
259+                 new  GridFilter (GridColumns .SHIP_NAME , FilterOperator .NOT_EQUAL_TO , newItem .getShipName ()),
260+                 new  GridFilter (GridColumns .ORDER_ID , FilterOperator .EQUAL_TO , newItem .getOrderId ().toString ()));
261+         waitForGridToLoad (0 , kendoGrid );
262+         List <GridItem > items  = kendoGrid .getItems ();
263+ 
264+         Assert .assertEquals (items .stream ().count (), 0 );
265+     }
266+ 
267+     @ Test 
268+     public  void  shipNameNotContainsFilter () throws  Exception  {
269+         // Remove first and last letter 
270+         var  shipName  = UUID .randomUUID ().toString ();
271+         shipName  = removeLastChar (removeFirstChar (shipName ));
272+         var  newItem  = createNewItemInDb (shipName );
273+ 
274+         // Apply combined filter. First filter by ID and than by ship name (not equal filter). 
275+         // After the first filter there is only one element when we apply the second we expect 0 elements. 
276+         kendoGrid .filter (
277+                 new  GridFilter (GridColumns .SHIP_NAME , FilterOperator .NOT_CONTAINS , newItem .getShipName ()),
278+                 new  GridFilter (GridColumns .ORDER_ID , FilterOperator .EQUAL_TO , newItem .getOrderId ().toString ()));
279+         waitForGridToLoad (0 , kendoGrid );
280+         List <GridItem > items  = kendoGrid .getItems ();
281+ 
282+         Assert .assertEquals (items .stream ().count (), 0 );
283+     }
284+ 
285+     @ Test 
286+     public  void  shipNameClearFilter () throws  Exception  {
287+         createNewItemInDb ();
288+ 
289+         // Filter by GUID and we know we wait the grid to be empty 
290+         kendoGrid .filter (GridColumns .SHIP_NAME , FilterOperator .STARTS_WITH , UUID .randomUUID ().toString ());
291+         waitForGridToLoad (0 , kendoGrid );
292+ 
293+         // Remove all filters and we expect that the grid will contain at least 1 item. 
294+         kendoGrid .removeFilters ();
295+         waitForGridToLoadAtLeast (1 , kendoGrid );
296+     }
297+ 
298+     private  String  removeFirstChar (String  s ) {
299+         return  s .substring (1 );
300+     }
301+ 
302+     private  String  removeLastChar (String  s ) {
303+         return  s .substring (0 , s .length () - 1 );
304+     }
305+ 
195306    private  void  waitUntilLoaded () {
196307        wait .until (x  ->
197308        {
@@ -235,12 +346,12 @@ private void waitForGridToLoadAtLeast(int expectedCount, KendoGrid grid)
235346        });
236347    }
237348
238-     private  Order  CreateNewItemInDb (String  shipName ) {
349+     private  Order  createNewItemInDb (String  shipName ) {
239350        // Replace it with service oriented call to your DB. Create real entity in DB. 
240351        return  new  Order (shipName );
241352    }
242353
243-     private  Order  CreateNewItemInDb () {
354+     private  Order  createNewItemInDb () {
244355        // Replace it with service oriented call to your DB. Create real entity in DB. 
245356        return  new  Order ("" );
246357    }
0 commit comments