X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fws%2Fdbsources%2FPDBRestClientTest.java;fp=test%2Fjalview%2Fws%2Fdbsources%2FPDBRestClientTest.java;h=ba07562a5f60de84638e9b42fd3b7eccf37827f2;hb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;hp=0000000000000000000000000000000000000000;hpb=10e637daad8983c41db8679baabea5563d7371f4;p=jalview.git diff --git a/test/jalview/ws/dbsources/PDBRestClientTest.java b/test/jalview/ws/dbsources/PDBRestClientTest.java new file mode 100644 index 0000000..ba07562 --- /dev/null +++ b/test/jalview/ws/dbsources/PDBRestClientTest.java @@ -0,0 +1,181 @@ +package jalview.ws.dbsources; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import jalview.ws.dbsources.PDBRestClient.PDBDocField; +import jalview.ws.uimodel.PDBRestRequest; +import jalview.ws.uimodel.PDBRestResponse; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class PDBRestClientTest +{ + + @Before + public void setUp() throws Exception + { + } + + @After + public void tearDown() throws Exception + { + } + + @Test + public void executeRequestTest() + { + List wantedFields = new ArrayList(); + wantedFields.add(PDBDocField.MOLECULE_TYPE); + wantedFields.add(PDBDocField.PDB_ID); + wantedFields.add(PDBDocField.GENUS); + wantedFields.add(PDBDocField.GENE_NAME); + wantedFields.add(PDBDocField.TITLE); + + PDBRestRequest request = new PDBRestRequest(); + request.setAllowEmptySeq(false); + request.setResponseSize(100); + request.setFieldToSearchBy("text:"); + request.setSearchTerm("abc"); + request.setWantedFields(wantedFields); + + PDBRestResponse response = new PDBRestClient().executeRequest(request); + assertTrue(response.getNumberOfItemsFound() > 99); + assertTrue(response.getSearchSummary() != null); + assertTrue(response.getSearchSummary().size() > 99); + } + + @Test + public void getPDBDocFieldsAsCommaDelimitedStringTest() + { + List wantedFields = new ArrayList(); + wantedFields.add(PDBDocField.MOLECULE_TYPE); + wantedFields.add(PDBDocField.PDB_ID); + wantedFields.add(PDBDocField.GENUS); + wantedFields.add(PDBDocField.GENE_NAME); + wantedFields.add(PDBDocField.TITLE); + assertEquals("molecule_type,pdb_id,genus,gene_name,title", + PDBRestClient + .getPDBDocFieldsAsCommaDelimitedString(wantedFields)); + } + + @Test + public void parsePDBJsonExceptionStringTest() + { + List wantedFields = new ArrayList(); + wantedFields.add(PDBDocField.MOLECULE_TYPE); + wantedFields.add(PDBDocField.PDB_ID); + wantedFields.add(PDBDocField.GENUS); + wantedFields.add(PDBDocField.GENE_NAME); + wantedFields.add(PDBDocField.TITLE); + + PDBRestRequest request = new PDBRestRequest(); + request.setAllowEmptySeq(false); + request.setResponseSize(100); + request.setFieldToSearchBy("text:"); + request.setSearchTerm("abc"); + request.setWantedFields(wantedFields); + + String jsonErrorResponse = ""; + try + { + jsonErrorResponse = readJsonStringFromFile("test/jalview/io/pdb_request_json_error.txt"); + } catch (IOException e) + { + e.printStackTrace(); + } + + String parsedErrorResponse = PDBRestClient + .parseJsonExceptionString(jsonErrorResponse); + 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\"}"; + + assertEquals(expectedErrorMsg, parsedErrorResponse); + } + + @Test(expected = RuntimeException.class) + public void testForExpectedRuntimeException() + { + List wantedFields = new ArrayList(); + wantedFields.add(PDBDocField.PDB_ID); + + PDBRestRequest request = new PDBRestRequest(); + request.setFieldToSearchBy("text:"); + request.setSearchTerm("abc OR text:go:abc"); + request.setWantedFields(wantedFields); + new PDBRestClient().executeRequest(request); + } + + @Test + public void parsePDBJsonResponseTest() + { + List wantedFields = new ArrayList(); + wantedFields.add(PDBDocField.MOLECULE_TYPE); + wantedFields.add(PDBDocField.PDB_ID); + wantedFields.add(PDBDocField.GENUS); + wantedFields.add(PDBDocField.GENE_NAME); + wantedFields.add(PDBDocField.TITLE); + + PDBRestRequest request = new PDBRestRequest(); + request.setAllowEmptySeq(false); + request.setWantedFields(wantedFields); + + String jsonString = ""; + try + { + jsonString = readJsonStringFromFile("test/jalview/io/pdb_response_json.txt"); + } catch (IOException e) + { + e.printStackTrace(); + } + PDBRestResponse response = PDBRestClient.parsePDBJsonResponse( + jsonString, request); + assertTrue(response.getSearchSummary() != null); + assertTrue(response.getNumberOfItemsFound() == 931); + assertTrue(response.getSearchSummary().size() == 14); + } + + @Test + public void getPDBIdColumIndexTest() + { + List wantedFields = new ArrayList(); + wantedFields.add(PDBDocField.MOLECULE_TYPE); + wantedFields.add(PDBDocField.GENUS); + wantedFields.add(PDBDocField.GENE_NAME); + wantedFields.add(PDBDocField.TITLE); + wantedFields.add(PDBDocField.PDB_ID); + assertEquals(5, PDBRestClient.getPDBIdColumIndex(wantedFields, true)); + assertEquals(4, PDBRestClient.getPDBIdColumIndex(wantedFields, false)); + } + + public String readJsonStringFromFile(String filePath) throws IOException + { + String fileContent; + BufferedReader br = new BufferedReader(new FileReader(filePath)); + try + { + StringBuilder sb = new StringBuilder(); + String line = br.readLine(); + + while (line != null) + { + sb.append(line); + sb.append(System.lineSeparator()); + line = br.readLine(); + } + fileContent = sb.toString(); + } finally + { + br.close(); + } + return fileContent; + } + + +}