package jalview.fts.core; import jalview.fts.api.FTSDataColumnI; import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class FTSRestClientTest { private FTSRestClient ftsRestClient; @BeforeMethod(alwaysRun = true) public void setup() { ftsRestClient = new FTSRestClient() { @Override public String getColumnDataConfigFileName() { return "/fts/uniprot_data_columns.txt"; } @Override public FTSRestResponse executeRequest(FTSRestRequest ftsRequest) throws Exception { return null; } }; } @Test(groups = { "Functional" }) public void getPrimaryKeyColumIndexTest() { Collection wantedFields = ftsRestClient .getAllDefaultDisplayedFTSDataColumns(); int foundIndex = -1; try { Assert.assertEquals(foundIndex, -1); foundIndex = ftsRestClient.getPrimaryKeyColumIndex(wantedFields, false); Assert.assertEquals(foundIndex, 0); foundIndex = ftsRestClient .getPrimaryKeyColumIndex(wantedFields, true); Assert.assertEquals(foundIndex, 1); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void getAllDefaulDisplayedDataColumns() { Assert.assertNotNull(ftsRestClient .getAllDefaultDisplayedFTSDataColumns()); Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns() .isEmpty()); Assert.assertEquals(ftsRestClient .getAllDefaultDisplayedFTSDataColumns().size(), 7); } @Test(groups = { "Functional" }) public void getDataColumnsFieldsAsCommaDelimitedString() { Collection wantedFields = ftsRestClient .getAllDefaultDisplayedFTSDataColumns(); String actual = ftsRestClient .getDataColumnsFieldsAsCommaDelimitedString(wantedFields); Assert.assertEquals(actual, "id,entry name,protein names,genes,organism,reviewed,length"); } @Test(groups = { "Functional" }) public void getAllFTSDataColumns() { Collection allFields = ftsRestClient .getAllFTSDataColumns(); Assert.assertNotNull(allFields); Assert.assertEquals(allFields.size(), 117); } @Test(groups = { "Functional" }) public void getSearchableDataColumns() { Collection searchalbeFields = ftsRestClient .getSearchableDataColumns(); Assert.assertNotNull(searchalbeFields); Assert.assertEquals(searchalbeFields.size(), 22); } @Test(groups = { "Functional" }) public void getPrimaryKeyColumn() { FTSDataColumnI expectedPKColumn; try { expectedPKColumn = ftsRestClient .getDataColumnByNameOrCode("Uniprot Id"); Assert.assertNotNull(ftsRestClient.getPrimaryKeyColumn()); Assert.assertEquals(ftsRestClient.getPrimaryKeyColumn(), expectedPKColumn); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void getDataColumnByNameOrCode() { try { FTSDataColumnI foundDataCol = ftsRestClient .getDataColumnByNameOrCode("genes"); Assert.assertNotNull(foundDataCol); Assert.assertEquals(foundDataCol.getName(), "Gene Names"); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void getDataColumnGroupById() { FTSDataColumnGroupI foundDataColGroup; try { foundDataColGroup = ftsRestClient.getDataColumnGroupById("g3"); Assert.assertNotNull(foundDataColGroup); Assert.assertEquals(foundDataColGroup.getName(), "Names & Taxonomy"); } catch (Exception e) { e.printStackTrace(); } } @Test(groups = { "Functional" }) public void getDefaultResponsePageSize() { int defaultResSize = ftsRestClient.getDefaultResponsePageSize(); Assert.assertEquals(defaultResSize, 500); } @Test(groups = { "Functional" }) public void getColumnMinWidthTest() { try { FTSDataColumnI foundDataCol = ftsRestClient .getDataColumnByNameOrCode("Protein names"); Assert.assertNotNull(foundDataCol); int actualColMinWidth = foundDataCol.getMinWidth(); Assert.assertEquals(actualColMinWidth, 300); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void getColumnMaxWidthTest() { try { FTSDataColumnI foundDataCol = ftsRestClient .getDataColumnByNameOrCode("Protein names"); Assert.assertNotNull(foundDataCol); int actualColMinWidth = foundDataCol.getMaxWidth(); Assert.assertEquals(actualColMinWidth, 1500); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void getColumnPreferredWidthTest() { try { FTSDataColumnI foundDataCol = ftsRestClient .getDataColumnByNameOrCode("Protein names"); Assert.assertNotNull(foundDataCol); int actualColMinWidth = foundDataCol.getPreferredWidth(); Assert.assertEquals(actualColMinWidth, 500); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void getColumnClassTest() { try { FTSDataColumnI foundDataCol = ftsRestClient .getDataColumnByNameOrCode("Protein names"); Assert.assertNotNull(foundDataCol); Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(), String.class); foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length"); Assert.assertNotNull(foundDataCol); Assert.assertEquals(foundDataCol.getDataType().getDataTypeClass(), Integer.class); // foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length"); // Assert.assertNotNull(foundDataCol); // Assert.assertEquals(foundDataCol.getDataColumnClass(), Double.class); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception thrown while testing..."); } } @Test(groups = { "Functional" }) public void coverageForEqualsAndHashFunction() { Set uniqueSet = new HashSet(); Collection searchableCols = ftsRestClient .getSearchableDataColumns(); for (FTSDataColumnI foundCol : searchableCols) { System.out.println(foundCol.toString()); uniqueSet.add(foundCol); uniqueSet.add(foundCol); } Assert.assertTrue(!uniqueSet.isEmpty()); Assert.assertEquals(uniqueSet.size(), 22); } @Test(groups = { "Functional" }) public void coverageForMiscellaneousBranches() { String actual = ftsRestClient.getPrimaryKeyColumn().toString(); Assert.assertEquals(actual, "Uniprot Id"); String actualGroupStr; try { actualGroupStr = ftsRestClient.getDataColumnGroupById("g4") .toString(); Assert.assertEquals(actualGroupStr, "Procedures & Softwares"); actualGroupStr = ftsRestClient.getDataColumnGroupById( "unavailable group").toString(); } catch (Exception e) { Assert.assertTrue(true); } String actualResourseFile = ftsRestClient .getResourceFile("/fts/uniprot_data_columns.txt"); Assert.assertNotNull(actualResourseFile); Assert.assertTrue(actualResourseFile.length() > 31); } @Test(groups = { "Functional" }, expectedExceptions = Exception.class) public void coverageForExceptionBranches() throws Exception { try { ftsRestClient.getDataColumnByNameOrCode("unavailable column"); } catch (Exception e) { System.out.println(e.getMessage()); String expectedMessage = "Couldn't find data column with name : unavailable column"; Assert.assertEquals(e.getMessage(), expectedMessage); } try { ftsRestClient.getDataColumnGroupById("unavailable column group Id"); } catch (Exception e) { System.out.println(e.getMessage()); String expectedMessage = "Couldn't find data column group with id : unavailable column group Id"; Assert.assertEquals(e.getMessage(), expectedMessage); } ftsRestClient.getDataColumnByNameOrCode("unavailable column"); ftsRestClient.getResourceFile("unavailable resource file"); } }