Added (and passed !)all the FTS tests from test.fts.core
[jalview.git] / test / jalview / fts / threedbeacons / TDBeaconsFTSRestClientTest.java
1 package jalview.fts.threedbeacons;
2
3 import static org.testng.AssertJUnit.assertTrue;
4
5 import java.util.ArrayList;
6 import java.util.Collection;
7 import java.util.HashSet;
8 import java.util.List;
9 import java.util.Set;
10
11 import org.testng.Assert;
12 import org.testng.annotations.AfterMethod;
13 import org.testng.annotations.BeforeClass;
14 import org.testng.annotations.BeforeMethod;
15 import org.testng.annotations.Test;
16
17 import jalview.fts.api.FTSDataColumnI;
18 import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
19 import jalview.fts.core.FTSRestClient;
20 import jalview.fts.core.FTSRestRequest;
21 import jalview.fts.core.FTSRestResponse;
22 import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient;
23 import jalview.gui.JvOptionPane;
24
25 public class TDBeaconsFTSRestClientTest
26 {
27   @BeforeClass(alwaysRun = true)
28   public void setUpJvOptionPane()
29   {
30     JvOptionPane.setInteractiveMode(false);
31     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
32   }
33   
34   private FTSRestClient ftsRestClient;
35
36   @BeforeMethod(alwaysRun = true)
37   public void setUp() throws Exception
38   {
39     ftsRestClient = new FTSRestClient()
40     {
41
42       @Override
43       public String getColumnDataConfigFileName()
44       {
45         return "/fts/tdbeacons_data_columns.txt";
46       }
47
48       @Override
49       public FTSRestResponse executeRequest(FTSRestRequest ftsRequest)
50               throws Exception
51       {
52         return null;
53       }
54     };
55   }
56
57   @AfterMethod(alwaysRun = true)
58   public void tearDown() throws Exception
59   {
60   }
61   
62   @Test
63   public void getAllDefaulDisplayedDataColumns()
64   {
65     Assert.assertNotNull(ftsRestClient
66             .getAllDefaultDisplayedFTSDataColumns());
67     System.out.println(ftsRestClient.getAllDefaultDisplayedFTSDataColumns());
68     Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
69             .isEmpty());
70     Assert.assertEquals(ftsRestClient
71             .getAllDefaultDisplayedFTSDataColumns().size(), 3);
72     // currently 3, may change -> change this test and the nexts accordingly
73   }
74   
75   @Test(groups = { "Functional" })
76   public void getPrimaryKeyColumIndexTest()
77   {
78     Collection<FTSDataColumnI> wantedFields = ftsRestClient
79             .getAllDefaultDisplayedFTSDataColumns();
80     int foundIndex = -1;
81     try
82     {
83       Assert.assertEquals(foundIndex, -1);
84       foundIndex = ftsRestClient.getPrimaryKeyColumIndex(wantedFields,
85               false);
86       Assert.assertEquals(foundIndex, 0);
87       foundIndex = ftsRestClient
88               .getPrimaryKeyColumIndex(wantedFields, true);
89       Assert.assertEquals(foundIndex, 1);
90     } catch (Exception e)
91     {
92       e.printStackTrace();
93       Assert.fail("Exception thrown while testing...");
94     }
95   }
96   
97   @Test(groups = { "Functional" })
98   public void getDataColumnsFieldsAsCommaDelimitedString()
99   {
100     Collection<FTSDataColumnI> wantedFields = ftsRestClient
101             .getAllDefaultDisplayedFTSDataColumns();
102     String actual = ftsRestClient
103             .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
104     Assert.assertEquals(actual,
105             "id,uniprot_accession,entry name");
106   }
107   
108   @Test(groups = { "Functional" })
109   public void getAllFTSDataColumns()
110   {
111     Collection<FTSDataColumnI> allFields = ftsRestClient
112             .getAllFTSDataColumns();
113     Assert.assertNotNull(allFields);
114     //System.out.println(allFields.size());
115     Assert.assertEquals(allFields.size(), 3);
116   }
117   
118   @Test(groups = { "Functional" })
119   public void getSearchableDataColumns()
120   {
121     Collection<FTSDataColumnI> searchableFields = ftsRestClient
122             .getSearchableDataColumns();
123     Assert.assertNotNull(searchableFields);
124     //System.out.println(searchableFields.size());
125     Assert.assertEquals(searchableFields.size(), 1); //only 1, as of first 3DB test
126   }
127   
128   @Test(groups = { "Functional" })
129   public void getPrimaryKeyColumn()
130   {
131     FTSDataColumnI expectedPKColumn;
132     try
133     {
134       expectedPKColumn = ftsRestClient
135               .getDataColumnByNameOrCode("Uniprot Id");
136       Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn());
137       Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(),
138               expectedPKColumn);
139     } catch (Exception e)
140     {
141       e.printStackTrace();
142       Assert.fail("Exception thrown while testing...");
143     }
144   }
145   
146   @Test(groups = { "Functional" })
147   public void getDataColumnByNameOrCode()
148   {
149     try
150     {
151       FTSDataColumnI foundDataCol = ftsRestClient
152               .getDataColumnByNameOrCode("uniprot_accession");
153       Assert.assertNotNull(foundDataCol);
154       Assert.assertEquals(foundDataCol.getName(), "UniProt Accession");
155     } catch (Exception e)
156     {
157       e.printStackTrace();
158       Assert.fail("Exception thrown while testing...");
159     }
160   }
161   
162   @Test(groups = { "Functional" })
163   public void getDataColumnGroupById()
164   {
165     FTSDataColumnGroupI foundDataColGroup;
166     try
167     {
168       foundDataColGroup = ftsRestClient.getDataColumnGroupById("g2");
169       Assert.assertNotNull(foundDataColGroup);
170       Assert.assertEquals(foundDataColGroup.getName(), "Name");
171     } catch (Exception e)
172     {
173       e.printStackTrace();
174     }
175   }
176   
177   @Test(groups = { "Functional" })
178   public void getDefaultResponsePageSize()
179   {
180     int defaultResSize = ftsRestClient.getDefaultResponsePageSize();
181     Assert.assertEquals(defaultResSize, 100); //why 100 or 500 ? pdb is 100, uniprot 500
182   }
183   
184   @Test(groups = { "Functional" })
185   public void getColumnMinWidthTest()
186   {
187     try
188     {
189       FTSDataColumnI foundDataCol = ftsRestClient
190               .getDataColumnByNameOrCode("uniprot_accession");
191       Assert.assertNotNull(foundDataCol);
192       int actualColMinWidth = foundDataCol.getMinWidth();
193       Assert.assertEquals(actualColMinWidth, 50);
194     } catch (Exception e)
195     {
196       e.printStackTrace();
197       Assert.fail("Exception thrown while testing...");
198     }
199   }
200   // could add test for MaxWidth & PreferedWith
201   
202   @Test(groups = { "Functional" })
203   public void getColumnClassTest()
204   {
205     try
206     {
207       FTSDataColumnI foundDataCol = ftsRestClient
208               .getDataColumnByNameOrCode("uniprot_accession");
209       Assert.assertNotNull(foundDataCol);
210       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
211               String.class);
212       foundDataCol = ftsRestClient.getDataColumnByNameOrCode("id");
213       Assert.assertNotNull(foundDataCol);
214       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
215               String.class);
216     } catch (Exception e)
217     {
218       e.printStackTrace();
219       Assert.fail("Exception thrown while testing...");
220     }
221   }
222   
223   @Test(groups = { "Functional" })
224   public void coverageForEqualsAndHashFunction()
225   {
226     Set<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
227     Collection<FTSDataColumnI> searchableCols = ftsRestClient
228             .getSearchableDataColumns();
229     System.out.println(searchableCols);
230     for (FTSDataColumnI foundCol : searchableCols)
231     {
232       System.out.println(foundCol.toString());
233       uniqueSet.add(foundCol);
234       uniqueSet.add(foundCol);
235     }
236     Assert.assertTrue(!uniqueSet.isEmpty());
237     //Assert.assertEquals(uniqueSet.size(), 22); -> 1 or 2 currently for 3DB
238   }
239   
240   
241   
242   @Test(groups = { "External", "Network" })  
243   public void executeRequestTest()
244   {
245     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
246     try
247     {
248       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
249               .getDataColumnByNameOrCode("model_category"));
250       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
251               .getDataColumnByNameOrCode("provider"));
252       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
253               .getDataColumnByNameOrCode("created"));
254     } catch (Exception e1)
255     {
256       e1.printStackTrace();
257     }
258     System.out.println("wantedFields >>" + wantedFields);
259
260     FTSRestRequest request = new FTSRestRequest();
261     //request.setAllowEmptySeq(false);
262     //request.setResponseSize(100);
263     request.setSearchTerm("01308.json");
264     request.setWantedFields(wantedFields);
265     System.out.println("request : " + request.getFieldToSearchBy());
266     System.out.println(request.toString());
267
268     FTSRestResponse response;
269     try
270     {
271       response = TDBeaconsFTSRestClient.getInstance().executeRequest(request);
272     } catch (Exception e)
273     {
274       e.printStackTrace();
275       Assert.fail("Couldn't execute webservice call!");
276       return;
277     }
278     //assertTrue(response.getNumberOfItemsFound() > 99);
279     assertTrue(response.getSearchSummary() != null);
280     assertTrue(response.getSearchSummary().size() > 99);
281   }
282 }