JAL-2189 format tests
[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             .getAllDefaultDisplayedFTSDataColumns();
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
65             .getAllDefaultDisplayedFTSDataColumns());
66     Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
67             .isEmpty());
68     Assert.assertEquals(ftsRestClient
69             .getAllDefaultDisplayedFTSDataColumns().size(), 7);
70   }
71
72   @Test(groups = { "Functional" })
73   public void getDataColumnsFieldsAsCommaDelimitedString()
74   {
75     Collection<FTSDataColumnI> wantedFields = ftsRestClient
76             .getAllDefaultDisplayedFTSDataColumns();
77     String actual = ftsRestClient
78             .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
79     Assert.assertEquals(actual,
80             "id,entry name,protein names,genes,organism,reviewed,length");
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(), 22);
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, 500);
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.getDataType().getDataTypeClass(),
217               String.class);
218       foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
219       Assert.assertNotNull(foundDataCol);
220       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
221               Integer.class);
222       // foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
223       // Assert.assertNotNull(foundDataCol);
224       // Assert.assertEquals(foundDataCol.getDataColumnClass(), Double.class);
225     } catch (Exception e)
226     {
227       e.printStackTrace();
228       Assert.fail("Exception thrown while testing...");
229     }
230   }
231
232   @Test(groups = { "Functional" })
233   public void coverageForEqualsAndHashFunction()
234   {
235     Set<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
236     Collection<FTSDataColumnI> searchableCols = ftsRestClient
237             .getSearchableDataColumns();
238     for (FTSDataColumnI foundCol : searchableCols)
239     {
240       System.out.println(foundCol.toString());
241       uniqueSet.add(foundCol);
242       uniqueSet.add(foundCol);
243     }
244     Assert.assertTrue(!uniqueSet.isEmpty());
245     Assert.assertEquals(uniqueSet.size(), 22);
246   }
247
248   @Test(groups = { "Functional" })
249   public void coverageForMiscellaneousBranches()
250   {
251     String actual = ftsRestClient.getPrimaryKeyColumn().toString();
252     Assert.assertEquals(actual, "Uniprot Id");
253
254     String actualGroupStr;
255     try
256     {
257       actualGroupStr = ftsRestClient.getDataColumnGroupById("g4")
258               .toString();
259       Assert.assertEquals(actualGroupStr, "Procedures & Softwares");
260       actualGroupStr = ftsRestClient.getDataColumnGroupById(
261               "unavailable group").toString();
262     } catch (Exception e)
263     {
264       Assert.assertTrue(true);
265     }
266
267     String actualResourseFile = ftsRestClient
268             .getResourceFile("/fts/uniprot_data_columns.txt");
269     Assert.assertNotNull(actualResourseFile);
270     Assert.assertTrue(actualResourseFile.length() > 31);
271   }
272
273   @Test(groups = { "Functional" }, expectedExceptions = Exception.class)
274   public void coverageForExceptionBranches() throws Exception
275   {
276     try
277     {
278       ftsRestClient.getDataColumnByNameOrCode("unavailable column");
279     } catch (Exception e)
280     {
281       System.out.println(e.getMessage());
282       String expectedMessage = "Couldn't find data column with name : unavailable column";
283       Assert.assertEquals(e.getMessage(), expectedMessage);
284     }
285     try
286     {
287       ftsRestClient.getDataColumnGroupById("unavailable column group Id");
288     } catch (Exception e)
289     {
290       System.out.println(e.getMessage());
291       String expectedMessage = "Couldn't find data column group with id : unavailable column group Id";
292       Assert.assertEquals(e.getMessage(), expectedMessage);
293     }
294
295     ftsRestClient.getDataColumnByNameOrCode("unavailable column");
296
297     ftsRestClient.getResourceFile("unavailable resource file");
298
299   }
300
301 }