JAL-1620 version bump and release notes
[jalview.git] / test / jalview / ws / seqfetcher / DbRefFetcherTest.java
index 2f826b3..8a18494 100644 (file)
@@ -1,25 +1,45 @@
-/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
  * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ws.seqfetcher;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import jalview.analysis.CrossRef;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
+import jalview.util.DBRefUtils;
+import jalview.ws.SequenceFetcher;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import jalview.datamodel.DBRefSource;
-import jalview.ws.DBRefFetcher;
-import jalview.ws.SequenceFetcher;
-import jalview.ws.dbsources.das.api.jalviewSourceI;
-
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
  * @author jimp
- *
+ * 
  */
 public class DbRefFetcherTest
 {
@@ -44,35 +64,56 @@ public class DbRefFetcherTest
   public void testStandardProtDbs()
   {
     String[] defdb = DBRefSource.PROTEINDBS;
-  List<DbSourceProxy> srces = new ArrayList<DbSourceProxy>();
-  for (String ddb : defdb)
-  {
-    SequenceFetcher sfetcher= new SequenceFetcher();
-    List<DbSourceProxy> srcesfordb = sfetcher.getSourceProxy(ddb);
-    
-    if (srcesfordb != null)
+    List<DbSourceProxy> srces = new ArrayList<DbSourceProxy>();
+    for (String ddb : defdb)
     {
-      srces.addAll(srcesfordb);
-    }
-  }
-  DbSourceProxy uniprot=null;
-  int i=0;
-  // append the selected sequence sources to the default dbs
-  for (DbSourceProxy s:srces)
-  {
-    if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT))
-    {
-      i++;
+      SequenceFetcher sfetcher = new SequenceFetcher();
+      List<DbSourceProxy> srcesfordb = sfetcher.getSourceProxy(ddb);
+
+      if (srcesfordb != null)
+      {
+        srces.addAll(srcesfordb);
+      }
     }
-    
-    if (s instanceof jalview.ws.dbsources.Uniprot)
+    DbSourceProxy uniprot = null;
+    int i = 0;
+    // append the selected sequence sources to the default dbs
+    for (DbSourceProxy s : srces)
     {
-      uniprot = s;
-      break;
+      if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT))
+      {
+        i++;
+      }
+
+      if (s instanceof jalview.ws.dbsources.Uniprot)
+      {
+        uniprot = s;
+        break;
+      }
     }
-  }
-          
-  assertTrue("Failed to find Uniprot source as first source amongst "+srces.size()+" sources (source was at position "+i+")", uniprot!=null && i<2);
+
+    assertTrue("Failed to find Uniprot source as first source amongst "
+            + srces.size() + " sources (source was at position " + i + ")",
+            uniprot != null && i < 2);
   }
 
+  @Test
+  public void testEmblUniprotProductRecovery() throws Exception
+  {
+    String retrievalId = "CAA23748"; // "V00488";
+    DbSourceProxy embl = new SequenceFetcher().getSourceProxy(DBRefSource.EMBL).get(0);
+    assertNotNull("Couldn't find the EMBL retrieval client",embl);
+    AlignmentI alsq = embl.getSequenceRecords(retrievalId);
+    assertNotNull("Couldn't find the EMBL record " + retrievalId, alsq);
+    assertEquals("Didn't retrieve right number of records", 1, alsq.getHeight());
+    DBRefEntry[] dr = DBRefUtils.selectRefs(alsq.getSequenceAt(0).getDBRef(), DBRefSource.PROTEINSEQ);
+    assertNotNull(dr);
+    assertEquals("Expected a single Uniprot cross reference", 1, dr.length);
+    AlignmentI sprods = CrossRef.findXrefSequences(alsq.getSequencesArray(), true, dr[0].getSource(), alsq.getDataset());
+    assertNotNull(
+            "Couldn't recover cross reference sequence from dataset. Was it ever added ?",
+            sprods);
+    
+    
+  }
 }