1 package jalview.ws.dbsources;
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;
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;
15 import org.junit.After;
16 import org.junit.Before;
17 import org.junit.Test;
19 public class PDBRestClientTest
23 public void setUp() throws Exception
28 public void tearDown() throws Exception
33 public void executeRequestTest()
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);
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);
49 PDBRestResponse response = new PDBRestClient().executeRequest(request);
50 assertTrue(response.getNumberOfItemsFound() > 99);
51 assertTrue(response.getSearchSummary() != null);
52 assertTrue(response.getSearchSummary().size() > 99);
56 public void getPDBDocFieldsAsCommaDelimitedStringTest()
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);
65 String expectedResult = "molecule_type,pdb_id,genus,gene_name,title";
66 String actualResult = PDBRestClient
67 .getPDBDocFieldsAsCommaDelimitedString(wantedFields);
69 assertEquals("", expectedResult, actualResult);
73 public void parsePDBJsonExceptionStringTest()
75 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
76 wantedFields.add(PDBDocField.MOLECULE_TYPE);
77 wantedFields.add(PDBDocField.PDB_ID);
78 wantedFields.add(PDBDocField.GENUS);
79 wantedFields.add(PDBDocField.GENE_NAME);
80 wantedFields.add(PDBDocField.TITLE);
82 PDBRestRequest request = new PDBRestRequest();
83 request.setAllowEmptySeq(false);
84 request.setResponseSize(100);
85 request.setFieldToSearchBy("text:");
86 request.setSearchTerm("abc");
87 request.setWantedFields(wantedFields);
89 String jsonErrorResponse = "";
92 jsonErrorResponse = readJsonStringFromFile("test/jalview/io/pdb_request_json_error.txt");
93 } catch (IOException e)
98 String parsedErrorResponse = PDBRestClient
99 .parseJsonExceptionString(jsonErrorResponse);
100 System.out.println(parsedErrorResponse);
102 String expectedErrorMsg = "\n============= PDB Rest Client RunTime error =============\n"
104 + "Message: org.apache.solr.search.SyntaxError: Cannot parse 'text:abc OR text:go:abc AND molecule_sequence:['' TO *]': Encountered \" \":\" \": \"\" at line 1, column 19.\n"
105 + "query: text:abc OR text:go:abc AND molecule_sequence:['' TO *]\n"
107 assertEquals(expectedErrorMsg, parsedErrorResponse);
110 @Test(expected = RuntimeException.class)
111 public void testForExpectedRuntimeException()
113 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
114 wantedFields.add(PDBDocField.PDB_ID);
116 PDBRestRequest request = new PDBRestRequest();
117 request.setFieldToSearchBy("text:");
118 request.setSearchTerm("abc OR text:go:abc");
119 request.setWantedFields(wantedFields);
120 new PDBRestClient().executeRequest(request);
124 public void parsePDBJsonResponseTest()
126 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
127 wantedFields.add(PDBDocField.MOLECULE_TYPE);
128 wantedFields.add(PDBDocField.PDB_ID);
129 wantedFields.add(PDBDocField.GENUS);
130 wantedFields.add(PDBDocField.GENE_NAME);
131 wantedFields.add(PDBDocField.TITLE);
133 PDBRestRequest request = new PDBRestRequest();
134 request.setAllowEmptySeq(false);
135 request.setWantedFields(wantedFields);
137 String jsonString = "";
140 jsonString = readJsonStringFromFile("test/jalview/io/pdb_response_json.txt");
141 } catch (IOException e)
145 PDBRestResponse response = PDBRestClient.parsePDBJsonResponse(
146 jsonString, request);
147 assertTrue(response.getSearchSummary() != null);
148 assertTrue(response.getNumberOfItemsFound() == 931);
149 assertTrue(response.getSearchSummary().size() == 14);
153 public void getPDBIdColumIndexTest()
155 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
156 wantedFields.add(PDBDocField.MOLECULE_TYPE);
157 wantedFields.add(PDBDocField.GENUS);
158 wantedFields.add(PDBDocField.GENE_NAME);
159 wantedFields.add(PDBDocField.TITLE);
160 wantedFields.add(PDBDocField.PDB_ID);
161 assertEquals(5, PDBRestClient.getPDBIdColumIndex(wantedFields, true));
162 assertEquals(4, PDBRestClient.getPDBIdColumIndex(wantedFields, false));
165 public String readJsonStringFromFile(String filePath) throws IOException
168 BufferedReader br = new BufferedReader(new FileReader(filePath));
171 StringBuilder sb = new StringBuilder();
172 String line = br.readLine();
177 sb.append(System.lineSeparator());
178 line = br.readLine();
180 fileContent = sb.toString();