JAL-2071 added unit tests for FTSRestClient
[jalview.git] / test / jalview / fts / core / FTSRestClientTest.java
diff --git a/test/jalview/fts/core/FTSRestClientTest.java b/test/jalview/fts/core/FTSRestClientTest.java
new file mode 100644 (file)
index 0000000..fa36cac
--- /dev/null
@@ -0,0 +1,310 @@
+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");
+
+  }
+
+}