JAL-2089 Merge branch releases/Release_2_10_Branch to master
[jalview.git] / test / jalview / fts / service / pdb / PDBFTSRestClientTest.java
  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
-package jalview.ws.dbsources;
+package jalview.fts.service.pdb;
 
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertTrue;
 
-import jalview.ws.dbsources.PDBRestClient.PDBDocField;
-import jalview.ws.uimodel.PDBRestRequest;
-import jalview.ws.uimodel.PDBRestResponse;
+import jalview.fts.api.FTSDataColumnI;
+import jalview.fts.core.FTSRestRequest;
+import jalview.fts.core.FTSRestResponse;
 
 import java.io.BufferedReader;
 import java.io.FileReader;
@@ -51,7 +51,7 @@ import com.sun.jersey.api.client.WebResource;
 import com.sun.jersey.api.client.config.ClientConfig;
 import com.sun.jersey.api.client.config.DefaultClientConfig;
 
-public class PDBRestClientTest
+public class PDBFTSRestClientTest
 {
 
   @BeforeMethod(alwaysRun = true)
@@ -59,7 +59,7 @@ public class PDBRestClientTest
   {
   }
 
-  @AfterMethod
+  @AfterMethod(alwaysRun = true)
   public void tearDown() throws Exception
   {
   }
@@ -67,24 +67,35 @@ public class PDBRestClientTest
   @Test(groups = { "External", "Network" })
   public void executeRequestTest()
   {
-    List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-    wantedFields.add(PDBDocField.MOLECULE_TYPE);
-    wantedFields.add(PDBDocField.PDB_ID);
-    wantedFields.add(PDBDocField.GENUS);
-    wantedFields.add(PDBDocField.GENE_NAME);
-    wantedFields.add(PDBDocField.TITLE);
-
-    PDBRestRequest request = new PDBRestRequest();
+    List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+    try
+    {
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("molecule_type"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("pdb_id"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("genus"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("gene_name"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("title"));
+    } catch (Exception e1)
+    {
+      e1.printStackTrace();
+    }
+
+    FTSRestRequest request = new FTSRestRequest();
     request.setAllowEmptySeq(false);
     request.setResponseSize(100);
     request.setFieldToSearchBy("text:");
     request.setSearchTerm("abc");
     request.setWantedFields(wantedFields);
 
-    PDBRestResponse response;
+    FTSRestResponse response;
     try
     {
-      response = new PDBRestClient().executeRequest(request);
+      response = PDBFTSRestClient.getInstance().executeRequest(request);
     } catch (Exception e)
     {
       e.printStackTrace();
@@ -99,16 +110,27 @@ public class PDBRestClientTest
   @Test(groups = { "Functional" })
   public void getPDBDocFieldsAsCommaDelimitedStringTest()
   {
-    List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-    wantedFields.add(PDBDocField.MOLECULE_TYPE);
-    wantedFields.add(PDBDocField.PDB_ID);
-    wantedFields.add(PDBDocField.GENUS);
-    wantedFields.add(PDBDocField.GENE_NAME);
-    wantedFields.add(PDBDocField.TITLE);
+    List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+    try
+    {
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("molecule_type"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("pdb_id"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("genus"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("gene_name"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("title"));
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+    }
 
     String expectedResult = "molecule_type,pdb_id,genus,gene_name,title";
-    String actualResult = PDBRestClient
-            .getPDBDocFieldsAsCommaDelimitedString(wantedFields);
+    String actualResult = PDBFTSRestClient.getInstance()
+            .getDataColumnsFieldsAsCommaDelimitedString(wantedFields);
 
     assertEquals("", expectedResult, actualResult);
   }
@@ -116,14 +138,25 @@ public class PDBRestClientTest
   @Test(groups = { "External, Network" })
   public void parsePDBJsonExceptionStringTest()
   {
-    List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-    wantedFields.add(PDBDocField.MOLECULE_TYPE);
-    wantedFields.add(PDBDocField.PDB_ID);
-    wantedFields.add(PDBDocField.GENUS);
-    wantedFields.add(PDBDocField.GENE_NAME);
-    wantedFields.add(PDBDocField.TITLE);
-
-    PDBRestRequest request = new PDBRestRequest();
+    List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+    try
+    {
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("molecule_type"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("pdb_id"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("genus"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("gene_name"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("title"));
+    } catch (Exception e1)
+    {
+      e1.printStackTrace();
+    }
+
+    FTSRestRequest request = new FTSRestRequest();
     request.setAllowEmptySeq(false);
     request.setResponseSize(100);
     request.setFieldToSearchBy("text:");
@@ -139,7 +172,7 @@ public class PDBRestClientTest
       e.printStackTrace();
     }
 
-    String parsedErrorResponse = PDBRestClient
+    String parsedErrorResponse = PDBFTSRestClient
             .parseJsonExceptionString(jsonErrorResponse);
 
     String expectedErrorMsg = "\n============= PDB Rest Client RunTime error =============\n"
@@ -151,32 +184,43 @@ public class PDBRestClientTest
     assertEquals(expectedErrorMsg, parsedErrorResponse);
   }
 
-  @Test(
-    groups = { "External", "Network" },
-    expectedExceptions = Exception.class)
+  @Test(groups = { "External" }, expectedExceptions = Exception.class)
   public void testForExpectedRuntimeException() throws Exception
   {
-    List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-    wantedFields.add(PDBDocField.PDB_ID);
+    List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+    wantedFields.add(PDBFTSRestClient.getInstance()
+            .getDataColumnByNameOrCode("pdb_id"));
 
-    PDBRestRequest request = new PDBRestRequest();
+    FTSRestRequest request = new FTSRestRequest();
     request.setFieldToSearchBy("text:");
     request.setSearchTerm("abc OR text:go:abc");
     request.setWantedFields(wantedFields);
-    new PDBRestClient().executeRequest(request);
+    PDBFTSRestClient.getInstance().executeRequest(request);
   }
 
+  // JBP: Is this actually external ? Looks like it is mocked
   @Test(groups = { "External" })
   public void parsePDBJsonResponseTest()
   {
-    List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-    wantedFields.add(PDBDocField.MOLECULE_TYPE);
-    wantedFields.add(PDBDocField.PDB_ID);
-    wantedFields.add(PDBDocField.GENUS);
-    wantedFields.add(PDBDocField.GENE_NAME);
-    wantedFields.add(PDBDocField.TITLE);
-
-    PDBRestRequest request = new PDBRestRequest();
+    List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+    try
+    {
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("molecule_type"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("pdb_id"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("genus"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("gene_name"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("title"));
+    } catch (Exception e1)
+    {
+      e1.printStackTrace();
+    }
+
+    FTSRestRequest request = new FTSRestRequest();
     request.setAllowEmptySeq(false);
     request.setWantedFields(wantedFields);
 
@@ -188,7 +232,7 @@ public class PDBRestClientTest
     {
       e.printStackTrace();
     }
-    PDBRestResponse response = PDBRestClient.parsePDBJsonResponse(
+    FTSRestResponse response = PDBFTSRestClient.parsePDBJsonResponse(
             jsonString, request);
     assertTrue(response.getSearchSummary() != null);
     assertTrue(response.getNumberOfItemsFound() == 931);
@@ -198,14 +242,34 @@ public class PDBRestClientTest
   @Test(groups = { "Functional" })
   public void getPDBIdColumIndexTest()
   {
-    List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-    wantedFields.add(PDBDocField.MOLECULE_TYPE);
-    wantedFields.add(PDBDocField.GENUS);
-    wantedFields.add(PDBDocField.GENE_NAME);
-    wantedFields.add(PDBDocField.TITLE);
-    wantedFields.add(PDBDocField.PDB_ID);
-    assertEquals(5, PDBRestClient.getPDBIdColumIndex(wantedFields, true));
-    assertEquals(4, PDBRestClient.getPDBIdColumIndex(wantedFields, false));
+    List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
+    try
+    {
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("molecule_type"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("genus"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("gene_name"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("title"));
+      wantedFields.add(PDBFTSRestClient.getInstance()
+              .getDataColumnByNameOrCode("pdb_id"));
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    try
+    {
+      assertEquals(5, PDBFTSRestClient.getInstance()
+              .getPrimaryKeyColumIndex(wantedFields, true));
+      assertEquals(4, PDBFTSRestClient.getInstance()
+              .getPrimaryKeyColumIndex(wantedFields, false));
+    } catch (Exception e)
+    {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
+    }
   }
 
   @Test(groups = { "External" })
@@ -216,7 +280,7 @@ public class PDBRestClientTest
 
     // Build request parameters for the REST Request
     WebResource webResource = client
-            .resource(PDBRestClient.PDB_SEARCH_ENDPOINT)
+            .resource(PDBFTSRestClient.PDB_SEARCH_ENDPOINT)
             .queryParam("wt", "json").queryParam("rows", String.valueOf(1))
             .queryParam("q", "text:abc AND molecule_sequence:['' TO *]");
 
@@ -255,9 +319,10 @@ public class PDBRestClientTest
 
         JSONObject pdbJsonDoc = docIter.next();
 
-        for (PDBDocField field : PDBDocField.values())
+        for (FTSDataColumnI field : PDBFTSRestClient.getInstance()
+                .getAllFTSDataColumns())
         {
-          if (field == PDBDocField.ALL)
+          if (field.getName().equalsIgnoreCase("ALL"))
           {
             continue;
           }