50734233a5b1fcc73d3a275c2e6296d05e440e6a
[jalview.git] / test / jalview / ext / ensembl / EnsemblXrefTest.java
1 package jalview.ext.ensembl;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertTrue;
5
6 import jalview.datamodel.DBRefEntry;
7
8 import java.io.BufferedReader;
9 import java.io.IOException;
10 import java.io.StringReader;
11 import java.net.URL;
12 import java.util.Arrays;
13 import java.util.List;
14
15 import org.testng.annotations.Test;
16
17 public class EnsemblXrefTest
18 {
19   //@formatter:off
20   private static final String JSON = 
21           "[{\"primary_id\":\"CCDS5863\",\"dbname\":\"CCDS\"}," +
22            "{\"primary_id\":\"P15056\",\"dbname\":\"Uniprot/SWISSPROT\"}]";
23   //@formatter:on
24
25   @Test(groups = "functional")
26   public void testGetCrossReferences()
27   {
28     System.out.println(JSON);
29     EnsemblXref testee = new EnsemblXref("http://rest.ensembl.org")
30     {
31       @Override
32       protected BufferedReader getHttpResponse(URL url, List<String> ids)
33               throws IOException
34       {
35         return new BufferedReader(new StringReader(JSON));
36       }
37     };
38
39     /*
40      * with no filter
41      */
42     List<DBRefEntry> dbrefs = testee.getCrossReferences("ABCDE", null);
43     assertEquals(2, dbrefs.size());
44     assertEquals("CCDS", dbrefs.get(0).getSource());
45     assertEquals("CCDS5863", dbrefs.get(0).getAccessionId());
46     // Uniprot name should get converted to Jalview canonical form
47     assertEquals("UNIPROT", dbrefs.get(1).getSource());
48     assertEquals("P15056", dbrefs.get(1).getAccessionId());
49
50     /*
51      * filter for Uniprot only
52      */
53     dbrefs = testee.getCrossReferences(
54             "ABCDE",
55             Arrays.asList(new String[] { "Uniprot/SWISSPROT",
56                 "Uniprot/SPTREMBL" }));
57     assertEquals(1, dbrefs.size());
58     assertEquals("UNIPROT", dbrefs.get(0).getSource());
59     assertEquals("P15056", dbrefs.get(0).getAccessionId());
60
61     /*
62      * filter for PDB only
63      */
64     dbrefs = testee.getCrossReferences("ABCDE",
65             Arrays.asList(new String[] { "PDB" }));
66     assertTrue(dbrefs.isEmpty());
67   }
68 }