4a90c4ee64cd65c531b52cce8da7330be4be8ff7
[jalview.git] / test / jalview / fts / core / FTSRestClientTest.java
1 package jalview.fts.core;
2
3 import jalview.fts.api.FTSDataColumnI;
4 import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
5
6 import java.util.Collection;
7 import java.util.HashSet;
8 import java.util.Set;
9
10 import org.testng.Assert;
11 import org.testng.annotations.BeforeMethod;
12 import org.testng.annotations.Test;
13
14 public class FTSRestClientTest
15 {
16   private FTSRestClient ftsRestClient;
17
18   @BeforeMethod(alwaysRun = true)
19   public void setup()
20   {
21     ftsRestClient = new FTSRestClient()
22     {
23
24       @Override
25       public String getColumnDataConfigFileName()
26       {
27         return "examples/testdata/test_fts_data_columns.conf";
28       }
29
30       @Override
31       public FTSRestResponse executeRequest(FTSRestRequest ftsRequest)
32               throws Exception
33       {
34         return null;
35       }
36     };
37   }
38
39   @Test(groups = { "Functional" })
40   public void getPrimaryKeyColumIndexTest()
41   {
42     Collection<FTSDataColumnI> wantedFields = ftsRestClient
43             .getAllDefaulDisplayedDataColumns();
44     int foundIndex = -1;
45     try
46     {
47       Assert.assertEquals(foundIndex, -1);
48       foundIndex = ftsRestClient.getPrimaryKeyColumIndex(wantedFields,
49               false);
50       Assert.assertEquals(foundIndex, 0);
51       foundIndex = ftsRestClient
52               .getPrimaryKeyColumIndex(wantedFields, true);
53       Assert.assertEquals(foundIndex, 1);
54     } catch (Exception e)
55     {
56       e.printStackTrace();
57       Assert.fail("Exception thrown while testing...");
58     }
59   }
60
61   @Test(groups = { "Functional" })
62   public void getAllDefaulDisplayedDataColumns()
63   {
64     Assert.assertNotNull(ftsRestClient.getAllDefaulDisplayedDataColumns());
65     Assert.assertTrue(!ftsRestClient.getAllDefaulDisplayedDataColumns()
66             .isEmpty());
67     Assert.assertEquals(ftsRestClient.getAllDefaulDisplayedDataColumns()
68             .size(), 6);
69   }
70
71   @Test(groups = { "Functional" })
72   public void getDataColumnsFieldsAsCommaDelimitedString()
73   {
74     Collection<FTSDataColumnI> wantedFields = ftsRestClient
75             .getAllDefaulDisplayedDataColumns();
76     String actual = ftsRestClient
77             .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
78     Assert.assertEquals(actual,
79             "entry name,protein names,genes,organism,created,last-modified");
80   }
81
82   @Test(groups = { "Functional" })
83   public void getDataColumnsFieldsAsTabDelimitedString()
84   {
85     Collection<FTSDataColumnI> wantedFields = ftsRestClient
86             .getAllDefaulDisplayedDataColumns();
87     String actual = ftsRestClient
88             .getDataColumnsFieldsAsTabDelimitedString(wantedFields);
89     Assert.assertEquals(actual,
90             "Entry Name\tProtein names\tGene Names\tOrganism\tDate of creation\tDate of last modification");
91   }
92
93   @Test(groups = { "Functional" })
94   public void getAllFTSDataColumns()
95   {
96     Collection<FTSDataColumnI> allFields = ftsRestClient
97             .getAllFTSDataColumns();
98     Assert.assertNotNull(allFields);
99     Assert.assertEquals(allFields.size(), 116);
100   }
101
102   @Test(groups = { "Functional" })
103   public void getSearchableDataColumns()
104   {
105     Collection<FTSDataColumnI> searchalbeFields = ftsRestClient
106             .getSearchableDataColumns();
107     Assert.assertNotNull(searchalbeFields);
108     Assert.assertEquals(searchalbeFields.size(), 28);
109   }
110
111   @Test(groups = { "Functional" })
112   public void getPrimaryKeyColumn()
113   {
114     FTSDataColumnI expectedPKColumn;
115     try
116     {
117       expectedPKColumn = ftsRestClient
118               .getDataColumnByNameOrCode("Entry Name");
119       Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn());
120       Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(),
121               expectedPKColumn);
122     } catch (Exception e)
123     {
124       e.printStackTrace();
125       Assert.fail("Exception thrown while testing...");
126     }
127   }
128
129   @Test(groups = { "Functional" })
130   public void getDataColumnByNameOrCode()
131   {
132     try
133     {
134       FTSDataColumnI foundDataCol = ftsRestClient
135               .getDataColumnByNameOrCode("genes");
136       Assert.assertNotNull(foundDataCol);
137       Assert.assertEquals(foundDataCol.getName(), "Gene Names");
138     } catch (Exception e)
139     {
140       e.printStackTrace();
141       Assert.fail("Exception thrown while testing...");
142     }
143   }
144
145   @Test(groups = { "Functional" })
146   public void getDataColumnGroupById()
147   {
148     FTSDataColumnGroupI foundDataColGroup;
149     try
150     {
151       foundDataColGroup = ftsRestClient.getDataColumnGroupById("g3");
152       Assert.assertNotNull(foundDataColGroup);
153       Assert.assertEquals(foundDataColGroup.getName(), "Names & Taxonomy");
154     } catch (Exception e)
155     {
156       e.printStackTrace();
157     }
158   }
159
160   @Test(groups = { "Functional" })
161   public void getDefaultResponsePageSize()
162   {
163     int defaultResSize = ftsRestClient.getDefaultResponsePageSize();
164     Assert.assertEquals(defaultResSize, 100);
165   }
166
167   @Test(groups = { "Functional" })
168   public void getColumnMinWidthTest()
169   {
170     try
171     {
172       FTSDataColumnI foundDataCol = ftsRestClient
173               .getDataColumnByNameOrCode("Protein names");
174       Assert.assertNotNull(foundDataCol);
175       int actualColMinWidth = foundDataCol.getMinWidth();
176       Assert.assertEquals(actualColMinWidth, 300);
177     } catch (Exception e)
178     {
179       e.printStackTrace();
180       Assert.fail("Exception thrown while testing...");
181     }
182   }
183
184   @Test(groups = { "Functional" })
185   public void getColumnMaxWidthTest()
186   {
187     try
188     {
189       FTSDataColumnI foundDataCol = ftsRestClient
190               .getDataColumnByNameOrCode("Protein names");
191       Assert.assertNotNull(foundDataCol);
192       int actualColMinWidth = foundDataCol.getMaxWidth();
193       Assert.assertEquals(actualColMinWidth, 1500);
194     } catch (Exception e)
195     {
196       e.printStackTrace();
197       Assert.fail("Exception thrown while testing...");
198     }
199   }
200
201   @Test(groups = { "Functional" })
202   public void getColumnPreferredWidthTest()
203   {
204     try
205     {
206       FTSDataColumnI foundDataCol = ftsRestClient
207               .getDataColumnByNameOrCode("Protein names");
208       Assert.assertNotNull(foundDataCol);
209       int actualColMinWidth = foundDataCol.getPreferredWidth();
210       Assert.assertEquals(actualColMinWidth, 500);
211     } catch (Exception e)
212     {
213       e.printStackTrace();
214       Assert.fail("Exception thrown while testing...");
215     }
216   }
217
218   @Test(groups = { "Functional" })
219   public void getColumnClassTest()
220   {
221     try
222     {
223       FTSDataColumnI foundDataCol = ftsRestClient
224               .getDataColumnByNameOrCode("Protein names");
225       Assert.assertNotNull(foundDataCol);
226       Assert.assertEquals(foundDataCol.getDataColumnClass(), String.class);
227       foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
228       Assert.assertNotNull(foundDataCol);
229       Assert.assertEquals(foundDataCol.getDataColumnClass(), Integer.class);
230       // foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
231       // Assert.assertNotNull(foundDataCol);
232       // Assert.assertEquals(foundDataCol.getDataColumnClass(), Double.class);
233     } catch (Exception e)
234     {
235       e.printStackTrace();
236       Assert.fail("Exception thrown while testing...");
237     }
238   }
239
240   @Test(groups = { "Functional" })
241   public void coverageForEqualsAndHashFunction()
242   {
243     Set<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
244     Collection<FTSDataColumnI> searchableCols = ftsRestClient
245             .getSearchableDataColumns();
246     for (FTSDataColumnI foundCol : searchableCols)
247     {
248       uniqueSet.add(foundCol);
249       uniqueSet.add(foundCol);
250     }
251     Assert.assertTrue(!uniqueSet.isEmpty());
252     Assert.assertEquals(uniqueSet.size(), 28);
253   }
254
255   @Test(groups = { "Functional" })
256   public void coverageForMiscellaneousBranches()
257   {
258     String actual = ftsRestClient.getPrimaryKeyColumn().toString();
259     Assert.assertEquals(actual, "Entry Name");
260
261     String actualGroupStr;
262     try
263     {
264       actualGroupStr = ftsRestClient.getDataColumnGroupById("g4")
265               .toString();
266       Assert.assertEquals(actualGroupStr, "Procedures & Softwares");
267       actualGroupStr = ftsRestClient.getDataColumnGroupById(
268               "unavailable group").toString();
269     } catch (Exception e)
270     {
271       Assert.assertTrue(true);
272     }
273
274     String actualResourseFile = ftsRestClient
275             .getResourceFile("fts/uniprot_data_columns.conf");
276     Assert.assertNotNull(actualResourseFile);
277     Assert.assertTrue(actualResourseFile.length() > 31);
278   }
279
280   @Test(groups = { "Functional" }, expectedExceptions = Exception.class)
281   public void coverageForExceptionBranches() throws Exception
282   {
283     try
284     {
285       ftsRestClient.getDataColumnByNameOrCode("unavailable column");
286     } catch (Exception e)
287     {
288       System.out.println(e.getMessage());
289       String expectedMessage = "Couldn't find data column with name : unavailable column";
290       Assert.assertEquals(e.getMessage(), expectedMessage);
291     }
292     try
293     {
294       ftsRestClient.getDataColumnGroupById("unavailable column group Id");
295     } catch (Exception e)
296     {
297       System.out.println(e.getMessage());
298       String expectedMessage = "Couldn't find data column group with id : unavailable column group Id";
299       Assert.assertEquals(e.getMessage(), expectedMessage);
300     }
301
302     ftsRestClient.getDataColumnByNameOrCode("unavailable column");
303
304     ftsRestClient.getResourceFile("unavailable resource file");
305
306   }
307
308 }