JAL-3829 mocking for PDBFTS for related query to UniprotFTS mock.
[jalview.git] / test / jalview / fts / threedbeacons / TDBeaconsFTSRestClientTest.java
1 package jalview.fts.threedbeacons;
2
3 import static org.testng.Assert.assertNull;
4 import static org.testng.AssertJUnit.assertEquals;
5 import static org.testng.AssertJUnit.assertTrue;
6
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.HashSet;
10 import java.util.List;
11 import java.util.Set;
12
13 import org.testng.Assert;
14 import org.testng.annotations.AfterMethod;
15 import org.testng.annotations.BeforeClass;
16 import org.testng.annotations.BeforeMethod;
17 import org.testng.annotations.Test;
18
19 import jalview.fts.api.FTSDataColumnI;
20 import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
21 import jalview.fts.core.FTSRestClient;
22 import jalview.fts.core.FTSRestRequest;
23 import jalview.fts.core.FTSRestResponse;
24 import jalview.fts.service.pdb.PDBFTSRestClient;
25 import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient;
26 import jalview.gui.JvOptionPane;
27
28 public class TDBeaconsFTSRestClientTest
29 {
30   @BeforeClass(alwaysRun = true)
31   public void setUpJvOptionPane()
32   {
33     JvOptionPane.setInteractiveMode(false);
34     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
35   }
36   
37   private FTSRestClient ftsRestClient;
38
39   @BeforeMethod(alwaysRun = true)
40   public void setUp() throws Exception
41   {
42     ftsRestClient = new FTSRestClient()
43     {
44
45       @Override
46       public String getColumnDataConfigFileName()
47       {
48         return "/fts/tdbeacons_data_columns.txt";
49       }
50
51       @Override
52       public FTSRestResponse executeRequest(FTSRestRequest ftsRequest)
53               throws Exception
54       {
55         return null;
56       }
57     };
58   }
59
60   @AfterMethod(alwaysRun = true)
61   public void tearDown() throws Exception
62   {
63   }
64   
65   @Test
66   public void getAllDefaulDisplayedDataColumns()
67   {     
68     // to change when resources.tdbeacons_data_columns.txt is changed
69     Assert.assertNotNull(ftsRestClient
70             .getAllDefaultDisplayedFTSDataColumns());
71     System.out.println(ftsRestClient.getAllDefaultDisplayedFTSDataColumns());
72     Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
73             .isEmpty());
74     Assert.assertEquals(ftsRestClient
75             .getAllDefaultDisplayedFTSDataColumns().size(), 11);
76   }
77   
78   @Test(groups = { "Functional" })
79   public void getPrimaryKeyColumIndexTest()
80   {
81     Collection<FTSDataColumnI> wantedFields = ftsRestClient
82             .getAllDefaultDisplayedFTSDataColumns();
83     int foundIndex = -1;
84     try
85     {
86       Assert.assertEquals(foundIndex, -1);
87       foundIndex = ftsRestClient.getPrimaryKeyColumIndex(wantedFields,
88               false);
89       Assert.assertEquals(foundIndex, 10);
90       foundIndex = ftsRestClient
91               .getPrimaryKeyColumIndex(wantedFields, true);
92       Assert.assertEquals(foundIndex, 11);
93     } catch (Exception e)
94     {
95       e.printStackTrace();
96       Assert.fail("Exception thrown while testing...");
97     }
98   }
99   
100   @Test(groups = { "Functional" })
101   public void getDataColumnsFieldsAsCommaDelimitedString()
102   {
103     // to change when resources.tdbeacons_data_columns.txt is changed
104     Collection<FTSDataColumnI> wantedFields = ftsRestClient
105             .getAllDefaultDisplayedFTSDataColumns();
106     String actual = ftsRestClient
107             .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
108     Assert.assertEquals(actual,
109             "model_identifier,provider,model_category,uniprot_start,uniprot_end,resolution,qmean_avg_local_score,coverage,created,entry_name,model_url");
110   }
111   
112   @Test(groups = { "Functional" })
113   public void getAllFTSDataColumns()
114   {
115     Collection<FTSDataColumnI> allFields = ftsRestClient
116             .getAllFTSDataColumns();
117     Assert.assertNotNull(allFields);
118     //System.out.println(allFields.size());
119     Assert.assertEquals(allFields.size(), 15);
120   }
121   
122   @Test(groups = { "Functional" })
123   public void getSearchableDataColumns()
124   {     
125     // to change when resources.tdbeacons_data_columns.txt is changed
126     Collection<FTSDataColumnI> searchableFields = ftsRestClient
127             .getSearchableDataColumns();
128     Assert.assertNotNull(searchableFields);
129     //System.out.println(searchableFields.size());
130     Assert.assertEquals(searchableFields.size(), 1); //only 1: uniprot accession
131   }
132   
133   @Test(groups = { "Functional" })
134   public void getPrimaryKeyColumn()
135   { 
136     // to change when resources.tdbeacons_data_columns.txt is changed
137     FTSDataColumnI expectedPKColumn;
138     try
139     {
140       expectedPKColumn = ftsRestClient
141               .getDataColumnByNameOrCode("Url");
142       Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn());
143       Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(),
144               expectedPKColumn);
145     } catch (Exception e)
146     {
147       e.printStackTrace();
148       Assert.fail("Exception thrown while testing...");
149     }
150   }
151   
152   @Test(groups = { "Functional" })
153   public void getDataColumnByNameOrCode()
154   {
155     try
156     {
157       FTSDataColumnI foundDataCol = ftsRestClient
158               .getDataColumnByNameOrCode("uniprot_accession");
159       Assert.assertNotNull(foundDataCol);
160       Assert.assertEquals(foundDataCol.getName(), "UniProt Accession");
161     } catch (Exception e)
162     {
163       e.printStackTrace();
164       Assert.fail("Exception thrown while testing...");
165     }
166   }
167   
168   @Test(groups = { "Functional" })
169   public void getDataColumnGroupById()
170   {
171     FTSDataColumnGroupI foundDataColGroup;
172     try
173     {
174       foundDataColGroup = ftsRestClient.getDataColumnGroupById("g2");
175       Assert.assertNotNull(foundDataColGroup);
176       Assert.assertEquals(foundDataColGroup.getName(), "Quality");
177     } catch (Exception e)
178     {
179       e.printStackTrace();
180     }
181   }
182   
183   @Test(groups = { "Functional" })
184   public void getDefaultResponsePageSize()
185   {
186     int defaultResSize = ftsRestClient.getDefaultResponsePageSize();
187     Assert.assertEquals(defaultResSize, 100); //why 100 or 500 ? pdb is 100, uniprot 500
188   }
189   
190   @Test(groups = { "Functional" })
191   public void getColumnMinWidthTest()
192   {
193     try
194     {
195       FTSDataColumnI foundDataCol = ftsRestClient
196               .getDataColumnByNameOrCode("uniprot_accession");
197       Assert.assertNotNull(foundDataCol);
198       int actualColMinWidth = foundDataCol.getMinWidth();
199       Assert.assertEquals(actualColMinWidth, 50);
200     } catch (Exception e)
201     {
202       e.printStackTrace();
203       Assert.fail("Exception thrown while testing...");
204     }
205   }
206   // could add test for MaxWidth & PreferedWith
207   
208   @Test(groups = { "Functional" })
209   public void getColumnClassTest()
210   {
211     try
212     {
213       FTSDataColumnI foundDataCol = ftsRestClient
214               .getDataColumnByNameOrCode("uniprot_accession");
215       Assert.assertNotNull(foundDataCol);
216       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
217               String.class);
218       foundDataCol = ftsRestClient.getDataColumnByNameOrCode("id");
219       Assert.assertNotNull(foundDataCol);
220       Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(),
221               String.class);
222     } catch (Exception e)
223     {
224       e.printStackTrace();
225       Assert.fail("Exception thrown while testing...");
226     }
227   }
228   
229   @Test(groups = { "Functional" })
230   public void coverageForEqualsAndHashFunction()
231   {
232     Set<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
233     Collection<FTSDataColumnI> searchableCols = ftsRestClient
234             .getSearchableDataColumns();
235     System.out.println(searchableCols);
236     for (FTSDataColumnI foundCol : searchableCols)
237     {
238       System.out.println(foundCol.toString());
239       uniqueSet.add(foundCol);
240       uniqueSet.add(foundCol);
241     }
242     Assert.assertTrue(!uniqueSet.isEmpty());
243     //Assert.assertEquals(uniqueSet.size(), 22); -> 1 or 2 currently for 3DB
244   }
245   
246   @Test(groups = { "Functional" })
247   public void getTDBIdColumIndexTest()
248   {
249     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
250     try
251     {
252       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
253               .getDataColumnByNameOrCode("Model id"));
254       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
255               .getDataColumnByNameOrCode("uniprot_accession"));
256       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
257               .getDataColumnByNameOrCode("entry name"));
258     } catch (Exception e)
259     {
260       e.printStackTrace();
261     }
262     try
263     {
264       assertEquals(4, TDBeaconsFTSRestClient.getInstance()
265               .getPrimaryKeyColumIndex(wantedFields, true));
266 //      assertEquals(3, TDBeaconsFTSRestClient.getInstance()
267 //              .getPrimaryKeyColumIndex(wantedFields, true));
268     } catch (Exception e)
269     {
270       e.printStackTrace();
271     }
272   }
273   
274   private static String mockResponse = "{\"uniprot_entry\":{\"sequence_length\":1863,\"ac\":\"P38398\",\"id\":\"BRCA1_HUMAN\"},\"structures\":[{\"model_identifier\":\"4igk\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2012-12-17\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":1.75,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4igk_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1t15\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2004-04-15\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":1.85,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1t15_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"4ifi\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2012-12-14\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.2,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4ifi_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1t29\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2004-04-20\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.3,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1t29_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3pxb\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2010-12-09\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.5,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3pxb_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"4y2g\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2015-02-09\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.5,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4y2g_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1y98\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2004-12-14\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.5,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1y98_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1jnx\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2001-07-26\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.5,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1jnx_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3pxa\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2010-12-09\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.55,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3pxa_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3k0h\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2009-09-24\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.7,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3k0h_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3k0k\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2009-09-24\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.7,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3k0k_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1n5o\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2002-11-06\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.8,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1n5o_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3pxc\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2010-12-09\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.8,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3pxc_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3pxd\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2010-12-09\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.8,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3pxd_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1t2u\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2004-04-22\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.8,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1t2u_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3k15\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2009-09-25\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.8,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3k15_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3pxe\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2010-12-09\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":2.85,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3pxe_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3k16\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2009-09-25\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":3.0,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3k16_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"4ofb\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2014-01-14\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":3.05,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4ofb_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"3coj\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2008-03-28\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":3.21,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/3coj_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"7lyb\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2021-03-06\",\"sequence_identity\":100.0,\"uniprot_start\":1,\"uniprot_end\":100,\"resolution\":3.28,\"coverage\":5.37,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/7lyb_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1t2v\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2004-04-22\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":3.3,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1t2v_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"4y18\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2015-02-06\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":3.5,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4y18_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"4jlu\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2013-03-13\",\"sequence_identity\":100.0,\"uniprot_start\":1649,\"uniprot_end\":1859,\"resolution\":3.5,\"coverage\":11.33,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4jlu_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"4u4a\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2014-07-23\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":3.51,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/4u4a_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"2ing\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2006-10-07\",\"sequence_identity\":100.0,\"uniprot_start\":1649,\"uniprot_end\":1859,\"resolution\":3.6,\"coverage\":11.33,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/2ing_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"7jzv\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2020-09-02\",\"sequence_identity\":99.0,\"uniprot_start\":2,\"uniprot_end\":104,\"resolution\":3.9,\"coverage\":5.53,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/7jzv_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"6g2i\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2018-03-23\",\"sequence_identity\":100.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"resolution\":5.9,\"coverage\":11.49,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/6g2i_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1jm7\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2001-07-17\",\"sequence_identity\":100.0,\"uniprot_start\":1,\"uniprot_end\":110,\"resolution\":null,\"coverage\":5.9,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1jm7_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"1oqa\",\"model_category\":\"EXPERIMENTALLY DETERMINED\",\"provider\":\"PDBE\",\"created\":\"2003-03-07\",\"sequence_identity\":100.0,\"uniprot_start\":1755,\"uniprot_end\":1863,\"resolution\":null,\"coverage\":5.85,\"model_url\":\"https://www.ebi.ac.uk/pdbe/static/entry/1oqa_updated.cif\",\"model_format\":\"MMCIF\"},{\"model_identifier\":\"612f67c86ba77a10ab6f34ec\",\"model_category\":\"TEMPLATE-BASED\",\"provider\":\"SWISSMODEL\",\"created\":\"2021-09-01\",\"sequence_identity\":1.0,\"uniprot_start\":1646,\"uniprot_end\":1859,\"coverage\":0.115,\"qmean_version\":\"4.2.0\",\"qmean_avg_local_score\":0.776,\"model_url\":\"https://beta.swissmodel.expasy.org/3d-beacons/uniprot/P38398.pdb?range=1646-1859&template=6g2i.1.K&provider=swissmodel\",\"model_format\":\"PDB\"},{\"model_identifier\":\"612f67c86ba77a10ab6f34f0\",\"model_category\":\"TEMPLATE-BASED\",\"provider\":\"SWISSMODEL\",\"created\":\"2021-09-01\",\"sequence_identity\":1.0,\"uniprot_start\":1,\"uniprot_end\":103,\"coverage\":0.055,\"qmean_version\":\"4.2.0\",\"qmean_avg_local_score\":0.655,\"model_url\":\"https://beta.swissmodel.expasy.org/3d-beacons/uniprot/P38398.pdb?range=1-103&template=1jm7.1.A&provider=swissmodel\",\"model_format\":\"PDB\"},{\"model_identifier\":\"AF-P38398-F1\",\"model_category\":\"Deep learning\",\"provider\":\"AlphaFold DB\",\"created\":\"2021-07-01\",\"sequence_identity\":1.0,\"uniprot_start\":1,\"uniprot_end\":1863,\"coverage\":100.0,\"model_url\":\"https://alphafold.ebi.ac.uk/files/AF-P38398-F1-model_v1.cif\",\"model_format\":\"MMCIF\"}]}";
275   
276   public static void setMock() {
277     FTSRestClient.createMockFTSRestClient((FTSRestClient)TDBeaconsFTSRestClient.getInstance(),"P38398.json", mockResponse);
278   }
279   @Test(groups= {"Functional"})
280   public void testMockTDBRequest()
281   {
282
283     setMock();
284     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
285     try
286     {
287       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
288               .getDataColumnByNameOrCode("Model Id"));
289       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
290               .getDataColumnByNameOrCode("model_url"));
291       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
292               .getDataColumnByNameOrCode("provider"));
293       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
294               .getDataColumnByNameOrCode("model_category"));
295       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
296               .getDataColumnByNameOrCode("qmean_avg_local_score"));
297       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
298               .getDataColumnByNameOrCode("uniprot_start"));
299       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
300               .getDataColumnByNameOrCode("uniprot_end"));
301     } catch (Exception e1)
302     {
303       e1.printStackTrace();
304     }
305     System.out.println("wantedFields >>" + wantedFields);
306
307     FTSRestRequest request = new FTSRestRequest();
308     FTSRestResponse response;
309
310     request.setResponseSize(100);
311     request.setFieldToSearchBy("");
312     request.setWantedFields(wantedFields);
313     // check 404 behaviour
314     request.setSearchTerm("P00000.json");
315
316
317     try {
318       response = TDBeaconsFTSRestClient.getInstance().executeRequest(request);
319       
320       assertNull(response);
321     } catch (Exception e)
322     {
323       e.printStackTrace();
324       Assert.fail("Unexpected failure during mock 3DBeacons 404 test");
325     }
326      
327     // check 200 behaviour
328     request.setSearchTerm("P38398.json");
329     System.out.println("request : " + request.getFieldToSearchBy());
330     //System.out.println(request.toString());
331
332     try
333     {
334       response = TDBeaconsFTSRestClient.getInstance().executeRequest(request);
335     } catch (Exception e)
336     {
337       e.printStackTrace();
338       Assert.fail("Couldn't execute webservice call!");
339       return;
340     }
341     assertTrue(response.getSearchSummary() != null);
342     assertTrue(response.getNumberOfItemsFound() > 3); //4 atm
343     System.out.println("Search summary : \n" + response.getSearchSummary());
344     
345     //System.out.println(response.getSearchSummary().size());
346   }
347
348   @Test(groups = { "External", "Network" })  
349   public void executeRequestTest()
350   {
351     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
352     try
353     {
354       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
355               .getDataColumnByNameOrCode("Model Id"));
356       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
357               .getDataColumnByNameOrCode("model_url"));
358       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
359               .getDataColumnByNameOrCode("provider"));
360       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
361               .getDataColumnByNameOrCode("model_category"));
362       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
363               .getDataColumnByNameOrCode("qmean_avg_local_score"));
364       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
365               .getDataColumnByNameOrCode("uniprot_start"));
366       wantedFields.add(TDBeaconsFTSRestClient.getInstance()
367               .getDataColumnByNameOrCode("uniprot_end"));
368     } catch (Exception e1)
369     {
370       e1.printStackTrace();
371     }
372     System.out.println("wantedFields >>" + wantedFields);
373
374     FTSRestRequest request = new FTSRestRequest();
375     request.setResponseSize(100);
376     request.setFieldToSearchBy("");
377     request.setSearchTerm("P01318.json");
378     request.setWantedFields(wantedFields);
379     System.out.println("request : " + request.getFieldToSearchBy());
380     //System.out.println(request.toString());
381
382     FTSRestResponse response;
383     try
384     {
385       response = TDBeaconsFTSRestClient.getInstance().executeRequest(request);
386     } catch (Exception e)
387     {
388       e.printStackTrace();
389       Assert.fail("Couldn't execute webservice call!");
390       return;
391     }
392     assertTrue(response.getSearchSummary() != null);
393     assertTrue(response.getNumberOfItemsFound() > 3); //4 atm
394     System.out.println("Search summary : \n" + response.getSearchSummary());
395     //System.out.println(response.getSearchSummary().size());
396   }
397 }