0dac04b98f9c284db5dc98e4885bb97c5222b3ff
[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 "/fts/uniprot_data_columns.txt";
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(), 7);
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             "id,entry name,protein names,genes,organism,length,reviewed");
80   }
81
82
83   @Test(groups = { "Functional" })
84   public void getAllFTSDataColumns()
85   {
86     Collection<FTSDataColumnI> allFields = ftsRestClient
87             .getAllFTSDataColumns();
88     Assert.assertNotNull(allFields);
89     Assert.assertEquals(allFields.size(), 117);
90   }
91
92   @Test(groups = { "Functional" })
93   public void getSearchableDataColumns()
94   {
95     Collection<FTSDataColumnI> searchalbeFields = ftsRestClient
96             .getSearchableDataColumns();
97     Assert.assertNotNull(searchalbeFields);
98     Assert.assertEquals(searchalbeFields.size(), 30);
99   }
100
101   @Test(groups = { "Functional" })
102   public void getPrimaryKeyColumn()
103   {
104     FTSDataColumnI expectedPKColumn;
105     try
106     {
107       expectedPKColumn = ftsRestClient
108               .getDataColumnByNameOrCode("Uniprot Id");
109       Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn());
110       Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(),
111               expectedPKColumn);
112     } catch (Exception e)
113     {
114       e.printStackTrace();
115       Assert.fail("Exception thrown while testing...");
116     }
117   }
118
119   @Test(groups = { "Functional" })
120   public void getDataColumnByNameOrCode()
121   {
122     try
123     {
124       FTSDataColumnI foundDataCol = ftsRestClient
125               .getDataColumnByNameOrCode("genes");
126       Assert.assertNotNull(foundDataCol);
127       Assert.assertEquals(foundDataCol.getName(), "Gene Names");
128     } catch (Exception e)
129     {
130       e.printStackTrace();
131       Assert.fail("Exception thrown while testing...");
132     }
133   }
134
135   @Test(groups = { "Functional" })
136   public void getDataColumnGroupById()
137   {
138     FTSDataColumnGroupI foundDataColGroup;
139     try
140     {
141       foundDataColGroup = ftsRestClient.getDataColumnGroupById("g3");
142       Assert.assertNotNull(foundDataColGroup);
143       Assert.assertEquals(foundDataColGroup.getName(), "Names & Taxonomy");
144     } catch (Exception e)
145     {
146       e.printStackTrace();
147     }
148   }
149
150   @Test(groups = { "Functional" })
151   public void getDefaultResponsePageSize()
152   {
153     int defaultResSize = ftsRestClient.getDefaultResponsePageSize();
154     Assert.assertEquals(defaultResSize, 100);
155   }
156
157   @Test(groups = { "Functional" })
158   public void getColumnMinWidthTest()
159   {
160     try
161     {
162       FTSDataColumnI foundDataCol = ftsRestClient
163               .getDataColumnByNameOrCode("Protein names");
164       Assert.assertNotNull(foundDataCol);
165       int actualColMinWidth = foundDataCol.getMinWidth();
166       Assert.assertEquals(actualColMinWidth, 300);
167     } catch (Exception e)
168     {
169       e.printStackTrace();
170       Assert.fail("Exception thrown while testing...");
171     }
172   }
173
174   @Test(groups = { "Functional" })
175   public void getColumnMaxWidthTest()
176   {
177     try
178     {
179       FTSDataColumnI foundDataCol = ftsRestClient
180               .getDataColumnByNameOrCode("Protein names");
181       Assert.assertNotNull(foundDataCol);
182       int actualColMinWidth = foundDataCol.getMaxWidth();
183       Assert.assertEquals(actualColMinWidth, 1500);
184     } catch (Exception e)
185     {
186       e.printStackTrace();
187       Assert.fail("Exception thrown while testing...");
188     }
189   }
190
191   @Test(groups = { "Functional" })
192   public void getColumnPreferredWidthTest()
193   {
194     try
195     {
196       FTSDataColumnI foundDataCol = ftsRestClient
197               .getDataColumnByNameOrCode("Protein names");
198       Assert.assertNotNull(foundDataCol);
199       int actualColMinWidth = foundDataCol.getPreferredWidth();
200       Assert.assertEquals(actualColMinWidth, 500);
201     } catch (Exception e)
202     {
203       e.printStackTrace();
204       Assert.fail("Exception thrown while testing...");
205     }
206   }
207
208   @Test(groups = { "Functional" })
209   public void getColumnClassTest()
210   {
211     try
212     {
213       FTSDataColumnI foundDataCol = ftsRestClient
214               .getDataColumnByNameOrCode("Protein names");
215       Assert.assertNotNull(foundDataCol);
216       Assert.assertEquals(foundDataCol.getDataColumnClass(), String.class);
217       foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
218       Assert.assertNotNull(foundDataCol);
219       Assert.assertEquals(foundDataCol.getDataColumnClass(), Integer.class);
220       // foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
221       // Assert.assertNotNull(foundDataCol);
222       // Assert.assertEquals(foundDataCol.getDataColumnClass(), Double.class);
223     } catch (Exception e)
224     {
225       e.printStackTrace();
226       Assert.fail("Exception thrown while testing...");
227     }
228   }
229
230   @Test(groups = { "Functional" })
231   public void coverageForEqualsAndHashFunction()
232   {
233     Set<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
234     Collection<FTSDataColumnI> searchableCols = ftsRestClient
235             .getSearchableDataColumns();
236     for (FTSDataColumnI foundCol : searchableCols)
237     {
238       uniqueSet.add(foundCol);
239       uniqueSet.add(foundCol);
240     }
241     Assert.assertTrue(!uniqueSet.isEmpty());
242     Assert.assertEquals(uniqueSet.size(), 30);
243   }
244
245   @Test(groups = { "Functional" })
246   public void coverageForMiscellaneousBranches()
247   {
248     String actual = ftsRestClient.getPrimaryKeyColumn().toString();
249     Assert.assertEquals(actual, "Uniprot Id");
250
251     String actualGroupStr;
252     try
253     {
254       actualGroupStr = ftsRestClient.getDataColumnGroupById("g4")
255               .toString();
256       Assert.assertEquals(actualGroupStr, "Procedures & Softwares");
257       actualGroupStr = ftsRestClient.getDataColumnGroupById(
258               "unavailable group").toString();
259     } catch (Exception e)
260     {
261       Assert.assertTrue(true);
262     }
263
264     String actualResourseFile = ftsRestClient
265             .getResourceFile("/fts/uniprot_data_columns.txt");
266     Assert.assertNotNull(actualResourseFile);
267     Assert.assertTrue(actualResourseFile.length() > 31);
268   }
269
270   @Test(groups = { "Functional" }, expectedExceptions = Exception.class)
271   public void coverageForExceptionBranches() throws Exception
272   {
273     try
274     {
275       ftsRestClient.getDataColumnByNameOrCode("unavailable column");
276     } catch (Exception e)
277     {
278       System.out.println(e.getMessage());
279       String expectedMessage = "Couldn't find data column with name : unavailable column";
280       Assert.assertEquals(e.getMessage(), expectedMessage);
281     }
282     try
283     {
284       ftsRestClient.getDataColumnGroupById("unavailable column group Id");
285     } catch (Exception e)
286     {
287       System.out.println(e.getMessage());
288       String expectedMessage = "Couldn't find data column group with id : unavailable column group Id";
289       Assert.assertEquals(e.getMessage(), expectedMessage);
290     }
291
292     ftsRestClient.getDataColumnByNameOrCode("unavailable column");
293
294     ftsRestClient.getResourceFile("unavailable resource file");
295
296   }
297
298 }