--- /dev/null
+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 "examples/testdata/test_fts_data_columns.conf";
+ }
+
+ @Override
+ public FTSRestResponse executeRequest(FTSRestRequest ftsRequest)
+ throws Exception
+ {
+ return null;
+ }
+ };
+ }
+
+ @Test(groups = { "Functional" })
+ public void getPrimaryKeyColumIndexTest()
+ {
+ Collection<FTSDataColumnI> wantedFields = ftsRestClient
+ .getAllDefaulDisplayedDataColumns();
+ 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.getAllDefaulDisplayedDataColumns());
+ Assert.assertTrue(!ftsRestClient.getAllDefaulDisplayedDataColumns()
+ .isEmpty());
+ Assert.assertEquals(ftsRestClient.getAllDefaulDisplayedDataColumns()
+ .size(), 6);
+ }
+
+ @Test(groups = { "Functional" })
+ public void getDataColumnsFieldsAsCommaDelimitedString()
+ {
+ Collection<FTSDataColumnI> wantedFields = ftsRestClient
+ .getAllDefaulDisplayedDataColumns();
+ String actual = ftsRestClient
+ .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
+ Assert.assertEquals(actual,
+ "entry name,protein names,genes,organism,created,last-modified");
+ }
+
+ @Test(groups = { "Functional" })
+ public void getDataColumnsFieldsAsTabDelimitedString()
+ {
+ Collection<FTSDataColumnI> wantedFields = ftsRestClient
+ .getAllDefaulDisplayedDataColumns();
+ String actual = ftsRestClient
+ .getDataColumnsFieldsAsTabDelimitedString(wantedFields);
+ Assert.assertEquals(actual,
+ "Entry Name\tProtein names\tGene Names\tOrganism\tDate of creation\tDate of last modification");
+ }
+
+ @Test(groups = { "Functional" })
+ public void getAllFTSDataColumns()
+ {
+ Collection<FTSDataColumnI> allFields = ftsRestClient
+ .getAllFTSDataColumns();
+ Assert.assertNotNull(allFields);
+ Assert.assertEquals(allFields.size(), 116);
+ }
+
+ @Test(groups = { "Functional" })
+ public void getSearchableDataColumns()
+ {
+ Collection<FTSDataColumnI> searchalbeFields = ftsRestClient
+ .getSearchableDataColumns();
+ Assert.assertNotNull(searchalbeFields);
+ Assert.assertEquals(searchalbeFields.size(), 28);
+ }
+
+ @Test(groups = { "Functional" })
+ public void getPrimaryKeyColumn()
+ {
+ FTSDataColumnI expectedPKColumn;
+ try
+ {
+ expectedPKColumn = ftsRestClient
+ .getDataColumnByNameOrCode("Entry Name");
+ 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, 100);
+ }
+
+ @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.getDataColumnClass(), String.class);
+ foundDataCol = ftsRestClient.getDataColumnByNameOrCode("length");
+ Assert.assertNotNull(foundDataCol);
+ Assert.assertEquals(foundDataCol.getDataColumnClass(), 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<FTSDataColumnI> uniqueSet = new HashSet<FTSDataColumnI>();
+ Collection<FTSDataColumnI> searchableCols = ftsRestClient
+ .getSearchableDataColumns();
+ for (FTSDataColumnI foundCol : searchableCols)
+ {
+ uniqueSet.add(foundCol);
+ uniqueSet.add(foundCol);
+ }
+ Assert.assertTrue(!uniqueSet.isEmpty());
+ Assert.assertEquals(uniqueSet.size(), 28);
+ }
+
+ @Test(groups = { "Functional" })
+ public void coverageForMiscellaneousBranches()
+ {
+ String actual = ftsRestClient.getPrimaryKeyColumn().toString();
+ Assert.assertEquals(actual, "Entry Name");
+
+ String actualGroupStr;
+ try
+ {
+ actualGroupStr = ftsRestClient.getDataColumnGroupById("g4")
+ .toString();
+ Assert.assertEquals(actualGroupStr, "Procedures & Softwares");
+ actualGroupStr = ftsRestClient.getDataColumnGroupById(
+ "unavailable group").toString();
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ String actualResourseFile = ftsRestClient
+ .getResourceFile("fts/uniprot_data_columns.conf");
+ 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)
+ {
+ e.printStackTrace();
+ 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)
+ {
+ e.printStackTrace();
+ 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");
+
+ }
+
+}