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);
64 assertEquals("molecule_type,pdb_id,genus,gene_name,title",
66 .getPDBDocFieldsAsCommaDelimitedString(wantedFields));
70 public void parsePDBJsonExceptionStringTest()
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);
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);
86 String jsonErrorResponse = "";
89 jsonErrorResponse = readJsonStringFromFile("test/jalview/io/pdb_request_json_error.txt");
90 } catch (IOException e)
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\"}";
99 assertEquals(expectedErrorMsg, parsedErrorResponse);
102 @Test(expected = RuntimeException.class)
103 public void testForExpectedRuntimeException()
105 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
106 wantedFields.add(PDBDocField.PDB_ID);
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);
116 public void parsePDBJsonResponseTest()
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);
125 PDBRestRequest request = new PDBRestRequest();
126 request.setAllowEmptySeq(false);
127 request.setWantedFields(wantedFields);
129 String jsonString = "";
132 jsonString = readJsonStringFromFile("test/jalview/io/pdb_response_json.txt");
133 } catch (IOException e)
137 PDBRestResponse response = PDBRestClient.parsePDBJsonResponse(
138 jsonString, request);
139 assertTrue(response.getSearchSummary() != null);
140 assertTrue(response.getNumberOfItemsFound() == 931);
141 assertTrue(response.getSearchSummary().size() == 14);
145 public void getPDBIdColumIndexTest()
147 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
148 wantedFields.add(PDBDocField.MOLECULE_TYPE);
149 wantedFields.add(PDBDocField.GENUS);
150 wantedFields.add(PDBDocField.GENE_NAME);
151 wantedFields.add(PDBDocField.TITLE);
152 wantedFields.add(PDBDocField.PDB_ID);
153 assertEquals(5, PDBRestClient.getPDBIdColumIndex(wantedFields, true));
154 assertEquals(4, PDBRestClient.getPDBIdColumIndex(wantedFields, false));
157 public String readJsonStringFromFile(String filePath) throws IOException
160 BufferedReader br = new BufferedReader(new FileReader(filePath));
163 StringBuilder sb = new StringBuilder();
164 String line = br.readLine();
169 sb.append(System.lineSeparator());
170 line = br.readLine();
172 fileContent = sb.toString();