X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Ffts%2Fthreedbeacons%2FTDBeaconsFTSRestClientTest.java;h=aaf91efeb19210f517d4d74ec266181753726dad;hb=066e3a364c358a39a66cf292cb98c9b26b289795;hp=ea3756c0da1cc2f1c29b195fae1992c2c95a3027;hpb=eb4fa398cc61118453e33187199438a5f8c397ba;p=jalview.git diff --git a/test/jalview/fts/threedbeacons/TDBeaconsFTSRestClientTest.java b/test/jalview/fts/threedbeacons/TDBeaconsFTSRestClientTest.java index ea3756c..aaf91ef 100644 --- a/test/jalview/fts/threedbeacons/TDBeaconsFTSRestClientTest.java +++ b/test/jalview/fts/threedbeacons/TDBeaconsFTSRestClientTest.java @@ -1,9 +1,32 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.fts.threedbeacons; import static org.testng.Assert.assertNull; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; +import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -21,7 +44,7 @@ import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI; import jalview.fts.core.FTSRestClient; import jalview.fts.core.FTSRestRequest; import jalview.fts.core.FTSRestResponse; -import jalview.fts.service.pdb.PDBFTSRestClient; +import jalview.fts.service.pdb.PDBFTSRestClientTest; import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient; import jalview.gui.JvOptionPane; @@ -33,7 +56,7 @@ public class TDBeaconsFTSRestClientTest JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } - + private FTSRestClient ftsRestClient; @BeforeMethod(alwaysRun = true) @@ -61,20 +84,22 @@ public class TDBeaconsFTSRestClientTest public void tearDown() throws Exception { } - + @Test public void getAllDefaulDisplayedDataColumns() - { + { // to change when resources.tdbeacons_data_columns.txt is changed - Assert.assertNotNull(ftsRestClient - .getAllDefaultDisplayedFTSDataColumns()); - System.out.println(ftsRestClient.getAllDefaultDisplayedFTSDataColumns()); + Assert.assertNotNull( + ftsRestClient.getAllDefaultDisplayedFTSDataColumns()); + System.out + .println(ftsRestClient.getAllDefaultDisplayedFTSDataColumns()); Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns() .isEmpty()); - Assert.assertEquals(ftsRestClient - .getAllDefaultDisplayedFTSDataColumns().size(), 11); + Assert.assertEquals( + ftsRestClient.getAllDefaultDisplayedFTSDataColumns().size(), + 15); } - + @Test(groups = { "Functional" }) public void getPrimaryKeyColumIndexTest() { @@ -86,17 +111,18 @@ public class TDBeaconsFTSRestClientTest Assert.assertEquals(foundIndex, -1); foundIndex = ftsRestClient.getPrimaryKeyColumIndex(wantedFields, false); - Assert.assertEquals(foundIndex, 10); - foundIndex = ftsRestClient - .getPrimaryKeyColumIndex(wantedFields, true); - Assert.assertEquals(foundIndex, 11); + Assert.assertEquals(foundIndex, 12); + foundIndex = ftsRestClient.getPrimaryKeyColumIndex(wantedFields, + true); + // 1+primary key index + Assert.assertEquals(foundIndex, 13); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } - + @Test(groups = { "Functional" }) public void getDataColumnsFieldsAsCommaDelimitedString() { @@ -106,39 +132,39 @@ public class TDBeaconsFTSRestClientTest String actual = ftsRestClient .getDataColumnsFieldsAsCommaDelimitedString(wantedFields); Assert.assertEquals(actual, - "model_identifier,provider,model_category,uniprot_start,uniprot_end,resolution,qmean_avg_local_score,coverage,created,entry_name,model_url"); + "uniprot_start,uniprot_end,provider,model_identifier,model_category,model_title,resolution,confidence_avg_local_score,confidence_type,confidence_version,coverage,created,model_url,model_format,model_page_url"); } - + @Test(groups = { "Functional" }) public void getAllFTSDataColumns() { Collection allFields = ftsRestClient .getAllFTSDataColumns(); Assert.assertNotNull(allFields); - //System.out.println(allFields.size()); - Assert.assertEquals(allFields.size(), 15); + // System.out.println(allFields.size()); + Assert.assertEquals(allFields.size(), 20); } - + @Test(groups = { "Functional" }) public void getSearchableDataColumns() - { + { // to change when resources.tdbeacons_data_columns.txt is changed Collection searchableFields = ftsRestClient .getSearchableDataColumns(); Assert.assertNotNull(searchableFields); - //System.out.println(searchableFields.size()); - Assert.assertEquals(searchableFields.size(), 1); //only 1: uniprot accession + // System.out.println(searchableFields.size()); + Assert.assertEquals(searchableFields.size(), 1); // only 1: uniprot + // accession } - + @Test(groups = { "Functional" }) public void getPrimaryKeyColumn() - { + { // to change when resources.tdbeacons_data_columns.txt is changed FTSDataColumnI expectedPKColumn; try { - expectedPKColumn = ftsRestClient - .getDataColumnByNameOrCode("Url"); + expectedPKColumn = ftsRestClient.getDataColumnByNameOrCode("Url"); Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn()); Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(), expectedPKColumn); @@ -148,7 +174,7 @@ public class TDBeaconsFTSRestClientTest Assert.fail("Exception thrown while testing..."); } } - + @Test(groups = { "Functional" }) public void getDataColumnByNameOrCode() { @@ -164,7 +190,7 @@ public class TDBeaconsFTSRestClientTest Assert.fail("Exception thrown while testing..."); } } - + @Test(groups = { "Functional" }) public void getDataColumnGroupById() { @@ -179,14 +205,15 @@ public class TDBeaconsFTSRestClientTest e.printStackTrace(); } } - + @Test(groups = { "Functional" }) public void getDefaultResponsePageSize() { int defaultResSize = ftsRestClient.getDefaultResponsePageSize(); - Assert.assertEquals(defaultResSize, 100); //why 100 or 500 ? pdb is 100, uniprot 500 + Assert.assertEquals(defaultResSize, 100); // why 100 or 500 ? pdb is 100, + // uniprot 500 } - + @Test(groups = { "Functional" }) public void getColumnMinWidthTest() { @@ -204,7 +231,7 @@ public class TDBeaconsFTSRestClientTest } } // could add test for MaxWidth & PreferedWith - + @Test(groups = { "Functional" }) public void getColumnClassTest() { @@ -225,7 +252,7 @@ public class TDBeaconsFTSRestClientTest Assert.fail("Exception thrown while testing..."); } } - + @Test(groups = { "Functional" }) public void coverageForEqualsAndHashFunction() { @@ -240,9 +267,9 @@ public class TDBeaconsFTSRestClientTest uniqueSet.add(foundCol); } Assert.assertTrue(!uniqueSet.isEmpty()); - //Assert.assertEquals(uniqueSet.size(), 22); -> 1 or 2 currently for 3DB + // Assert.assertEquals(uniqueSet.size(), 22); -> 1 or 2 currently for 3DB } - + @Test(groups = { "Functional" }) public void getTDBIdColumIndexTest() { @@ -254,7 +281,7 @@ public class TDBeaconsFTSRestClientTest wantedFields.add(TDBeaconsFTSRestClient.getInstance() .getDataColumnByNameOrCode("uniprot_accession")); wantedFields.add(TDBeaconsFTSRestClient.getInstance() - .getDataColumnByNameOrCode("entry name")); + .getDataColumnByNameOrCode("Title")); } catch (Exception e) { e.printStackTrace(); @@ -263,20 +290,80 @@ public class TDBeaconsFTSRestClientTest { assertEquals(4, TDBeaconsFTSRestClient.getInstance() .getPrimaryKeyColumIndex(wantedFields, true)); -// assertEquals(3, TDBeaconsFTSRestClient.getInstance() -// .getPrimaryKeyColumIndex(wantedFields, true)); + // assertEquals(3, TDBeaconsFTSRestClient.getInstance() + // .getPrimaryKeyColumIndex(wantedFields, true)); } catch (Exception e) { e.printStackTrace(); } } - - 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\"}]}"; - - public static void setMock() { - TDBeaconsFTSRestClient.createMockTDBeaconsFSRestClient("P38398.json", mockResponse); + + private static String[][] mocks = { { "P38398.json", null }, + { "P01308.json", null }, + { "P0DTD1.json", null } + + // , { "P0DTD3.json", "{}" } actually results in 404, but {} is in body + }; + + private static void setMockData() + { + try + { + mocks[0][1] = PDBFTSRestClientTest.readJsonStringFromFile( + "test/jalview/fts/threedbeacons/p38398_tdb_fts_query_resp.txt"); + + mocks[1][1] = PDBFTSRestClientTest.readJsonStringFromFile( + "test/jalview/fts/threedbeacons/p01308_tdb_fts_query_resp.txt"); + + mocks[2][1] = PDBFTSRestClientTest.readJsonStringFromFile( + "test/jalview/fts/threedbeacons/p0dtd1_tdb_fts_query_resp.txt"); + + } catch (IOException e) + { + Assert.fail("Couldn't read mock response data", e); + } + } + + public static void setMock() + { + setMockData(); + FTSRestClient.createMockFTSRestClient( + (FTSRestClient) TDBeaconsFTSRestClient.getInstance(), mocks); + } + + private static String dev_url = "https://wwwdev.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/"; + + private static String prod_url = "https://www.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/"; + + /** + * check that the mock request and response are the same as the response from + * a live 3D-beacons endpoint + * + * Note - servers often have rapidly changing ids / URIs so this might fail, + * but the overall structure will remain. + * + * @throws Exception + */ + @Test(groups = { "Network", "Integration" }) + public void verifyMockTDBRequest() throws Exception + { + setMockData(); + for (String[] otherMock : mocks) + { + verifyMockTDBRequest(otherMock[0], otherMock[1]); + } + } + + private void verifyMockTDBRequest(String mockRequest, + String _mockResponse) throws Exception + { + URL tdb_req = new URL(prod_url + mockRequest); + byte[] resp = tdb_req.openStream().readAllBytes(); + String tresp = new String(resp, StandardCharsets.UTF_8); + assertEquals(_mockResponse.trim(), tresp.trim()); } - @Test(groups= {"Functional"}) + + @Test(groups = { "Functional" }) public void testMockTDBRequest() { @@ -313,25 +400,27 @@ public class TDBeaconsFTSRestClientTest // check 404 behaviour request.setSearchTerm("P00000.json"); + try + { + response = TDBeaconsFTSRestClient.getInstance() + .executeRequest(request); - try { - response = TDBeaconsFTSRestClient.getInstance().executeRequest(request); - assertNull(response); } catch (Exception e) { e.printStackTrace(); Assert.fail("Unexpected failure during mock 3DBeacons 404 test"); } - + // check 200 behaviour request.setSearchTerm("P38398.json"); System.out.println("request : " + request.getFieldToSearchBy()); - //System.out.println(request.toString()); + // System.out.println(request.toString()); try { - response = TDBeaconsFTSRestClient.getInstance().executeRequest(request); + response = TDBeaconsFTSRestClient.getInstance() + .executeRequest(request); } catch (Exception e) { e.printStackTrace(); @@ -339,13 +428,13 @@ public class TDBeaconsFTSRestClientTest return; } assertTrue(response.getSearchSummary() != null); - assertTrue(response.getNumberOfItemsFound() > 3); //4 atm + assertTrue(response.getNumberOfItemsFound() > 3); // 4 atm System.out.println("Search summary : \n" + response.getSearchSummary()); - - //System.out.println(response.getSearchSummary().size()); + + // System.out.println(response.getSearchSummary().size()); } - @Test(groups = { "External", "Network" }) + @Test(groups = { "External", "Network" }) public void executeRequestTest() { List wantedFields = new ArrayList(); @@ -360,7 +449,7 @@ public class TDBeaconsFTSRestClientTest wantedFields.add(TDBeaconsFTSRestClient.getInstance() .getDataColumnByNameOrCode("model_category")); wantedFields.add(TDBeaconsFTSRestClient.getInstance() - .getDataColumnByNameOrCode("qmean_avg_local_score")); + .getDataColumnByNameOrCode("confidence_avg_local_score")); wantedFields.add(TDBeaconsFTSRestClient.getInstance() .getDataColumnByNameOrCode("uniprot_start")); wantedFields.add(TDBeaconsFTSRestClient.getInstance() @@ -377,12 +466,13 @@ public class TDBeaconsFTSRestClientTest request.setSearchTerm("P01318.json"); request.setWantedFields(wantedFields); System.out.println("request : " + request.getFieldToSearchBy()); - //System.out.println(request.toString()); + // System.out.println(request.toString()); FTSRestResponse response; try { - response = TDBeaconsFTSRestClient.getInstance().executeRequest(request); + response = TDBeaconsFTSRestClient.getInstance() + .executeRequest(request); } catch (Exception e) { e.printStackTrace(); @@ -390,8 +480,8 @@ public class TDBeaconsFTSRestClientTest return; } assertTrue(response.getSearchSummary() != null); - assertTrue(response.getNumberOfItemsFound() > 3); //4 atm + assertTrue(response.getNumberOfItemsFound() > 3); // 4 atm System.out.println("Search summary : \n" + response.getSearchSummary()); - //System.out.println(response.getSearchSummary().size()); + // System.out.println(response.getSearchSummary().size()); } }