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