9a27cf32359ade7e29a3712f918d56c96d43c5d5
[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     // to change when resources.tdbeacons_data_columns.txt is changed
68     Assert.assertNotNull(ftsRestClient
69             .getAllDefaultDisplayedFTSDataColumns());
70     System.out.println(ftsRestClient.getAllDefaultDisplayedFTSDataColumns());
71     Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
72             .isEmpty());
73     Assert.assertEquals(ftsRestClient
74             .getAllDefaultDisplayedFTSDataColumns().size(), 11);
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, 10);
89       foundIndex = ftsRestClient
90               .getPrimaryKeyColumIndex(wantedFields, true);
91       Assert.assertEquals(foundIndex, 11);
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     // to change when resources.tdbeacons_data_columns.txt is changed
103     Collection<FTSDataColumnI> wantedFields = ftsRestClient
104             .getAllDefaultDisplayedFTSDataColumns();
105     String actual = ftsRestClient
106             .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
107     Assert.assertEquals(actual,
108             "model_identifier,provider,model_category,uniprot_start,uniprot_end,resolution,qmean_avg_local_score,coverage,created,entry_name,model_url");
109   }
110   
111   @Test(groups = { "Functional" })
112   public void getAllFTSDataColumns()
113   {
114     Collection<FTSDataColumnI> allFields = ftsRestClient
115             .getAllFTSDataColumns();
116     Assert.assertNotNull(allFields);
117     //System.out.println(allFields.size());
118     Assert.assertEquals(allFields.size(), 15);
119   }
120   
121   @Test(groups = { "Functional" })
122   public void getSearchableDataColumns()
123   {     
124     // to change when resources.tdbeacons_data_columns.txt is changed
125     Collection<FTSDataColumnI> searchableFields = ftsRestClient
126             .getSearchableDataColumns();
127     Assert.assertNotNull(searchableFields);
128     //System.out.println(searchableFields.size());
129     Assert.assertEquals(searchableFields.size(), 1); //only 1: uniprot accession
130   }
131   
132   @Test(groups = { "Functional" })
133   public void getPrimaryKeyColumn()
134   { 
135     // to change when resources.tdbeacons_data_columns.txt is changed
136     FTSDataColumnI expectedPKColumn;
137     try
138     {
139       expectedPKColumn = ftsRestClient
140               .getDataColumnByNameOrCode("Url");
141       Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn());
142       Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(),
143               expectedPKColumn);
144     } catch (Exception e)
145     {
146       e.printStackTrace();
147       Assert.fail("Exception thrown while testing...");
148     }
149   }
150   
151   @Test(groups = { "Functional" })
152   public void getDataColumnByNameOrCode()
153   {
154     try
155     {
156       FTSDataColumnI foundDataCol = ftsRestClient
157               .getDataColumnByNameOrCode("uniprot_accession");
158       Assert.assertNotNull(foundDataCol);
159       Assert.assertEquals(foundDataCol.getName(), "UniProt Accession");
160     } catch (Exception e)
161     {
162       e.printStackTrace();
163       Assert.fail("Exception thrown while testing...");
164     }
165   }
166   
167   @Test(groups = { "Functional" })
168   public void getDataColumnGroupById()
169   {
170     FTSDataColumnGroupI foundDataColGroup;
171     try
172     {
173       foundDataColGroup = ftsRestClient.getDataColumnGroupById("g2");
174       Assert.assertNotNull(foundDataColGroup);
175       Assert.assertEquals(foundDataColGroup.getName(), "Quality");
176     } catch (Exception e)
177     {
178       e.printStackTrace();
179     }
180   }
181   
182   @Test(groups = { "Functional" })
183   public void getDefaultResponsePageSize()
184   {
185     int defaultResSize = ftsRestClient.getDefaultResponsePageSize();
186     Assert.assertEquals(defaultResSize, 100); //why 100 or 500 ? pdb is 100, uniprot 500
187   }
188   
189   @Test(groups = { "Functional" })
190   public void getColumnMinWidthTest()
191   {
192     try
193     {
194       FTSDataColumnI foundDataCol = ftsRestClient
195               .getDataColumnByNameOrCode("uniprot_accession");
196       Assert.assertNotNull(foundDataCol);
197       int actualColMinWidth = foundDataCol.getMinWidth();
198       Assert.assertEquals(actualColMinWidth, 50);
199     } catch (Exception e)
200     {
201       e.printStackTrace();
202       Assert.fail("Exception thrown while testing...");
203     }
204   }
205   // could add test for MaxWidth & PreferedWith
206   
207   @Test(groups = { "Functional" })
208   public void getColumnClassTest()
209   {
210     try
211     {
212       FTSDataColumnI foundDataCol = ftsRestClient
213               .getDataColumnByNameOrCode("uniprot_accession");
214       Assert.assertNotNull(foundDataCol);
215       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
216               String.class);
217       foundDataCol = ftsRestClient.getDataColumnByNameOrCode("id");
218       Assert.assertNotNull(foundDataCol);
219       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
220               String.class);
221     } catch (Exception e)
222     {
223       e.printStackTrace();
224       Assert.fail("Exception thrown while testing...");
225     }
226   }
227   
228   @Test(groups = { "Functional" })
229   public void coverageForEqualsAndHashFunction()
230   {
231     Set<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
232     Collection<FTSDataColumnI> searchableCols = ftsRestClient
233             .getSearchableDataColumns();
234     System.out.println(searchableCols);
235     for (FTSDataColumnI foundCol : searchableCols)
236     {
237       System.out.println(foundCol.toString());
238       uniqueSet.add(foundCol);
239       uniqueSet.add(foundCol);
240     }
241     Assert.assertTrue(!uniqueSet.isEmpty());
242     //Assert.assertEquals(uniqueSet.size(), 22); -> 1 or 2 currently for 3DB
243   }
244   
245   @Test(groups = { "Functional" })
246   public void getTDBIdColumIndexTest()
247   {
248     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
249     try
250     {
251       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
252               .getDataColumnByNameOrCode("Model id"));
253       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
254               .getDataColumnByNameOrCode("uniprot_accession"));
255       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
256               .getDataColumnByNameOrCode("entry name"));
257     } catch (Exception e)
258     {
259       e.printStackTrace();
260     }
261     try
262     {
263       assertEquals(4, TDBeaconsFTSRestClient.getInstance()
264               .getPrimaryKeyColumIndex(wantedFields, true));
265 //      assertEquals(3, TDBeaconsFTSRestClient.getInstance()
266 //              .getPrimaryKeyColumIndex(wantedFields, true));
267     } catch (Exception e)
268     {
269       e.printStackTrace();
270     }
271   }
272   
273
274   @Test(groups = { "External", "Network" })  
275   public void executeRequestTest()
276   {
277     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
278     try
279     {
280       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
281               .getDataColumnByNameOrCode("Model Id"));
282       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
283               .getDataColumnByNameOrCode("model_url"));
284       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
285               .getDataColumnByNameOrCode("provider"));
286       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
287               .getDataColumnByNameOrCode("model_category"));
288       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
289               .getDataColumnByNameOrCode("qmean_avg_local_score"));
290       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
291               .getDataColumnByNameOrCode("uniprot_start"));
292       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
293               .getDataColumnByNameOrCode("uniprot_end"));
294     } catch (Exception e1)
295     {
296       e1.printStackTrace();
297     }
298     System.out.println("wantedFields >>" + wantedFields);
299
300     FTSRestRequest request = new FTSRestRequest();
301     request.setResponseSize(100);
302     request.setFieldToSearchBy("");
303     request.setSearchTerm("P01318.json");
304     request.setWantedFields(wantedFields);
305     System.out.println("request : " + request.getFieldToSearchBy());
306     //System.out.println(request.toString());
307
308     FTSRestResponse response;
309     try
310     {
311       response = TDBeaconsFTSRestClient.getInstance().executeRequest(request);
312     } catch (Exception e)
313     {
314       e.printStackTrace();
315       Assert.fail("Couldn't execute webservice call!");
316       return;
317     }
318     assertTrue(response.getSearchSummary() != null);
319     assertTrue(response.getNumberOfItemsFound() > 3); //4 atm
320     System.out.println("Search summary : \n" + response.getSearchSummary());
321     //System.out.println(response.getSearchSummary().size());
322   }
323 }