--- /dev/null
+package jalview.ext.ensembl;
+
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.DBRefEntry;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+public class EnsemblXrefTest
+{
+ //@formatter:off
+ private static final String JSON =
+ "[{\"primary_id\":\"CCDS5863\",\"dbname\":\"CCDS\"}," +
+ "{\"primary_id\":\"P15056\",\"dbname\":\"Uniprot/SWISSPROT\"}]";
+ //@formatter:on
+
+ @Test(groups = "functional")
+ public void testGetCrossReferences()
+ {
+ System.out.println(JSON);
+ EnsemblXref testee = new EnsemblXref("http://rest.ensembl.org")
+ {
+ @Override
+ protected BufferedReader getHttpResponse(URL url, List<String> ids)
+ throws IOException
+ {
+ return new BufferedReader(new StringReader(JSON));
+ }
+ };
+
+ /*
+ * with no filter
+ */
+ List<DBRefEntry> dbrefs = testee.getCrossReferences("ABCDE", null);
+ assertEquals(2, dbrefs.size());
+ assertEquals("CCDS", dbrefs.get(0).getSource());
+ assertEquals("CCDS5863", dbrefs.get(0).getAccessionId());
+ // Uniprot name should get converted to Jalview canonical form
+ assertEquals("UNIPROT", dbrefs.get(1).getSource());
+ assertEquals("P15056", dbrefs.get(1).getAccessionId());
+
+ /*
+ * filter for Uniprot only
+ */
+ dbrefs = testee.getCrossReferences(
+ "ABCDE",
+ Arrays.asList(new String[] { "Uniprot/SWISSPROT",
+ "Uniprot/SPTREMBL" }));
+ assertEquals(1, dbrefs.size());
+ assertEquals("UNIPROT", dbrefs.get(0).getSource());
+ assertEquals("P15056", dbrefs.get(0).getAccessionId());
+
+ /*
+ * filter for PDB only
+ */
+ dbrefs = testee.getCrossReferences("ABCDE",
+ Arrays.asList(new String[] { "PDB" }));
+ assertTrue(dbrefs.isEmpty());
+ }
+}