JAL-3829 minimal test of additional TDB filters - not at all robust
[jalview.git] / test / jalview / gui / structurechooser / StructureChooserQuerySourceTest.java
index f492ce6..36d7d0a 100644 (file)
@@ -24,6 +24,8 @@ package jalview.gui.structurechooser;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 
+import java.util.Collection;
+import java.util.List;
 import java.util.Vector;
 
 import org.junit.Assert;
@@ -38,11 +40,13 @@ import jalview.datamodel.DBRefSource;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
+import jalview.fts.api.FTSData;
 import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.fts.service.pdb.PDBFTSRestClient;
 import jalview.fts.threedbeacons.TDBeaconsFTSRestClientTest;
 import jalview.gui.JvOptionPane;
+import jalview.gui.StructureChooser;
 import jalview.jbgui.FilterOption;
 
 public class StructureChooserQuerySourceTest
@@ -173,7 +177,9 @@ public class StructureChooserQuerySourceTest
   {
     System.out.println("seq >>>> " + upSeq);
     TDBeaconsFTSRestClientTest.setMock();
+    PDBFTSRestClient.setMock();
     StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq});
+    // gets the lightweight proxy rather than the ThreeDBStructureChooserQuerySource
     AssertJUnit.assertTrue(scquery instanceof ThreeDBStructureChooserQuerySource);
     String query = scquery.buildQuery(upSeq);
     AssertJUnit.assertEquals("P38398", query);
@@ -257,9 +263,26 @@ public class StructureChooserQuerySourceTest
     
     FTSRestResponse upResponse = null;
     FTSRestResponse pdbResponse = null;
+    // TODO test available options
+    // Best coverage
+    // Best Alphafold Model
+    // Best model (by confidence score)
+    // Will also need to develop a more sophisticated filtering system
+    List<FilterOption> opts = tdbquery.getAvailableFilterOptions(StructureChooser.VIEWS_FILTER);
+    FilterOption opt_singlebest = opts.get(0);
+    FilterOption opt_manybest = opts.get(1);
+    assertEquals(opt_singlebest.getValue(), ThreeDBStructureChooserQuerySource.FILTER_FIRST_BEST_COVERAGE);
+    assertEquals(opt_manybest.getValue(), ThreeDBStructureChooserQuerySource.FILTER_TDBEACONS_COVERAGE);
     
     try {
-      upResponse = tdbquery.fetchStructuresMetaData(upSeq, tdbquery.getDocFieldPrefs().getStructureSummaryFields(),  null, false);
+      upResponse = tdbquery.fetchStructuresMetaData(upSeq, tdbquery.getDocFieldPrefs().getStructureSummaryFields(),  opt_singlebest, false);
+      tdbquery.updateAvailableFilterOptions(StructureChooser.VIEWS_FILTER,opts,upResponse.getSearchSummary());
+      // test ranking without additional PDBe data
+      FTSRestResponse firstRanked = tdbquery.selectFirstRankedQuery(upSeq, upResponse.getSearchSummary(), tdbquery.getDocFieldPrefs().getStructureSummaryFields(), opt_singlebest.getValue(), false);
+      assertEquals(firstRanked.getNumberOfItemsFound(),1);
+      // many best response
+      upResponse = tdbquery.fetchStructuresMetaData(upSeq, tdbquery.getDocFieldPrefs().getStructureSummaryFields(),  opt_manybest, false);
+      assertTrue(firstRanked.getNumberOfItemsFound()<upResponse.getNumberOfItemsFound());
       // NB Could have race condition here 
       String pdb_Query = tdbquery.buildPDBFTSQueryFor(upResponse);
       assertTrue(pdb_Query.trim().length()>0);
@@ -268,6 +291,7 @@ public class StructureChooserQuerySourceTest
       FTSRestResponse joinedResp = tdbquery.joinResponses(upResponse, pdbResponse);
       assertEquals(upResponse.getNumberOfItemsFound(),joinedResp.getNumberOfItemsFound());
       
+      
     } catch (Exception x)
     {
       x.printStackTrace();