JAL-1667 updated test and internationalization messages
[jalview.git] / test / jalview / ws / dbsources / PDBRestClientTest.java
1 package jalview.ws.dbsources;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
6 import jalview.ws.uimodel.PDBRestRequest;
7 import jalview.ws.uimodel.PDBRestResponse;
8
9 import java.io.BufferedReader;
10 import java.io.FileReader;
11 import java.io.IOException;
12 import java.util.ArrayList;
13 import java.util.List;
14
15 import org.junit.After;
16 import org.junit.Before;
17 import org.junit.Test;
18
19 public class PDBRestClientTest
20 {
21
22   @Before
23   public void setUp() throws Exception
24   {
25   }
26
27   @After
28   public void tearDown() throws Exception
29   {
30   }
31
32   @Test
33   public void executeRequestTest()
34   {
35     List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
36     wantedFields.add(PDBDocField.MOLECULE_TYPE);
37     wantedFields.add(PDBDocField.PDB_ID);
38     wantedFields.add(PDBDocField.GENUS);
39     wantedFields.add(PDBDocField.GENE_NAME);
40     wantedFields.add(PDBDocField.TITLE);
41
42     PDBRestRequest request = new PDBRestRequest();
43     request.setAllowEmptySeq(false);
44     request.setResponseSize(100);
45     request.setFieldToSearchBy("text:");
46     request.setSearchTerm("abc");
47     request.setWantedFields(wantedFields);
48
49     PDBRestResponse response = new PDBRestClient().executeRequest(request);
50     assertTrue(response.getNumberOfItemsFound() > 99);
51     assertTrue(response.getSearchSummary() != null);
52     assertTrue(response.getSearchSummary().size() > 99);
53   }
54
55   @Test
56   public void getPDBDocFieldsAsCommaDelimitedStringTest()
57   {
58     List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
59     wantedFields.add(PDBDocField.MOLECULE_TYPE);
60     wantedFields.add(PDBDocField.PDB_ID);
61     wantedFields.add(PDBDocField.GENUS);
62     wantedFields.add(PDBDocField.GENE_NAME);
63     wantedFields.add(PDBDocField.TITLE);
64     assertEquals("molecule_type,pdb_id,genus,gene_name,title",
65             PDBRestClient
66                     .getPDBDocFieldsAsCommaDelimitedString(wantedFields));
67   }
68
69   @Test
70   public void parsePDBJsonExceptionStringTest()
71   {
72     List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
73     wantedFields.add(PDBDocField.MOLECULE_TYPE);
74     wantedFields.add(PDBDocField.PDB_ID);
75     wantedFields.add(PDBDocField.GENUS);
76     wantedFields.add(PDBDocField.GENE_NAME);
77     wantedFields.add(PDBDocField.TITLE);
78
79     PDBRestRequest request = new PDBRestRequest();
80     request.setAllowEmptySeq(false);
81     request.setResponseSize(100);
82     request.setFieldToSearchBy("text:");
83     request.setSearchTerm("abc");
84     request.setWantedFields(wantedFields);
85
86     String jsonErrorResponse = "";
87     try
88     {
89       jsonErrorResponse = readJsonStringFromFile("test/jalview/io/pdb_request_json_error.txt");
90     } catch (IOException e)
91     {
92       e.printStackTrace();
93     }
94
95     String parsedErrorResponse = PDBRestClient
96             .parseJsonExceptionString(jsonErrorResponse);
97     String expectedErrorMsg = "org.apache.solr.search.SyntaxError: Cannot parse 'text:abc OR text:go:abc AND molecule_sequence:['' TO *]': Encountered \" \":\" \": \"\" at line 1, column 19.{\"q\":\"text:abc OR text:go:abc AND molecule_sequence:['' TO *]\",\"fl\":\"pdb_id\",\"sort\":\"\",\"rows\":\"100\",\"wt\":\"json\"}";
98
99     assertEquals(expectedErrorMsg, parsedErrorResponse);
100   }
101
102   @Test(expected = RuntimeException.class)
103   public void testForExpectedRuntimeException()
104   {
105     List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
106     wantedFields.add(PDBDocField.PDB_ID);
107
108     PDBRestRequest request = new PDBRestRequest();
109     request.setFieldToSearchBy("text:");
110     request.setSearchTerm("abc OR text:go:abc");
111     request.setWantedFields(wantedFields);
112     new PDBRestClient().executeRequest(request);
113   }
114
115   @Test
116   public void parsePDBJsonResponseTest()
117   {
118     List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
119     wantedFields.add(PDBDocField.MOLECULE_TYPE);
120     wantedFields.add(PDBDocField.PDB_ID);
121     wantedFields.add(PDBDocField.GENUS);
122     wantedFields.add(PDBDocField.GENE_NAME);
123     wantedFields.add(PDBDocField.TITLE);
124
125     PDBRestRequest request = new PDBRestRequest();
126     request.setAllowEmptySeq(false);
127     request.setWantedFields(wantedFields);
128
129     String jsonString = "";
130     try
131     {
132       jsonString = readJsonStringFromFile("test/jalview/io/pdb_response_json.txt");
133     } catch (IOException e)
134     {
135       e.printStackTrace();
136     }
137     PDBRestResponse response = PDBRestClient.parsePDBJsonResponse(
138             jsonString, request);
139     assertTrue(response.getSearchSummary() != null);
140     assertTrue(response.getNumberOfItemsFound() == 931);
141     assertTrue(response.getSearchSummary().size() == 14);
142   }
143
144   public String readJsonStringFromFile(String filePath) throws IOException
145   {
146     String fileContent;
147     BufferedReader br = new BufferedReader(new FileReader(filePath));
148     try
149     {
150       StringBuilder sb = new StringBuilder();
151       String line = br.readLine();
152
153       while (line != null)
154       {
155         sb.append(line);
156         sb.append(System.lineSeparator());
157         line = br.readLine();
158         }
159       fileContent = sb.toString();
160     } finally
161     {
162       br.close();
163     }
164     return fileContent;
165   }
166
167
168 }