JAL-2485 JAL-2246 test Uniprot FTS summary
[jalview.git] / test / jalview / ws / dbsources / RemoteFormatTest.java
1 package jalview.ws.dbsources;
2
3 import static org.testng.AssertJUnit.assertFalse;
4 import static org.testng.AssertJUnit.assertTrue;
5
6 import jalview.fts.api.FTSData;
7 import jalview.fts.api.FTSDataColumnI;
8 import jalview.fts.api.FTSRestClientI;
9 import jalview.fts.core.FTSRestRequest;
10 import jalview.fts.core.FTSRestResponse;
11 import jalview.fts.service.uniprot.UniProtFTSRestClient;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import org.testng.annotations.Test;
17
18 /**
19  * A class to verify that remotely fetched data has an expected format and can
20  * be successfully processed by Jalview. This is intended as a first line of
21  * defence and early warning of service affecting changes to data fetched
22  * externally.
23  * <p>
24  * This is class is not intended to cover remote services e.g. alignment. Nor
25  * should it duplicate tests already provided by other classes (such as
26  * PDBFTSRestClientTest). Or maybe we will relocate those tests here...
27  */
28 public class RemoteFormatTest
29 {
30   @Test(groups = "Network")
31   public void testFetchUniprot()
32   {
33     // P00340
34   }
35
36   @Test(groups = "Network")
37   public void testFetchPdb()
38   {
39     // 1QIP
40   }
41
42   @Test(groups = "Network")
43   public void testFetchEmbl()
44   {
45     // X53828
46   }
47
48   @Test(groups = "Network")
49   public void testFetchEmblCDS()
50   {
51     // CAA37824
52   }
53
54   @Test(groups = "Network")
55   public void testFetchEnsembl()
56   {
57     // ENSG00000157764
58   }
59
60   @Test(groups = "Network")
61   public void testFetchEnsemblGenomes()
62   {
63     // DDB_G0283883
64   }
65
66   @Test(groups = "Network")
67   public void testFetchPfamSeed()
68   {
69     // PF03760
70   }
71
72   @Test(groups = "Network")
73   public void testFetchPfamFull()
74   {
75     // PF03760
76   }
77
78   @Test(groups = "Network")
79   public void testFetchRfamSeed()
80   {
81     // RF00014
82   }
83
84   @Test(groups = { "Network" })
85   public void testUniprotFreeTextSearch() throws Exception
86   {
87     List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
88     FTSRestClientI client = UniProtFTSRestClient.getInstance();
89     wantedFields.add(client.getDataColumnByNameOrCode("id"));
90     wantedFields.add(client.getDataColumnByNameOrCode("entry name"));
91     wantedFields.add(client.getDataColumnByNameOrCode("organism"));
92     wantedFields.add(client.getDataColumnByNameOrCode("reviewed")); // Status
93     wantedFields.add(client.getDataColumnByNameOrCode("length"));
94   
95     FTSRestRequest request = new FTSRestRequest();
96     request.setAllowEmptySeq(false);
97     request.setResponseSize(100);
98     request.setFieldToSearchBy("Search All");
99     request.setSearchTerm("metanephrops"); // lobster!
100     request.setWantedFields(wantedFields);
101   
102     FTSRestResponse response;
103     response = client.executeRequest(request);
104     assertTrue(response.getNumberOfItemsFound() > 20);
105     assertTrue(response.getSearchSummary() != null);
106     assertTrue(response.getSearchSummary().size() > 20);
107     // verify we successfully filtered out the header row (JAL-2485)
108     FTSData header = response.getSearchSummary().iterator().next();
109     assertFalse("Failed to filter out summary header row",
110             header.getSummaryData()[0].toString().equalsIgnoreCase("Entry"));
111   }
112 }