+ @SuppressWarnings("deprecation")
+ @Test(groups = { "Functional" })
+ public void buildThreeDBQueryTest()
+ {
+ System.out.println("seq >>>> " + upSeq);
+ TDBeaconsFTSRestClientTest.setMock();
+ StructureChooserQuerySource scquery = StructureChooserQuerySource.getQuerySourceFor(new SequenceI[] { upSeq});
+ assertTrue(scquery instanceof ThreeDBStructureChooserQuerySource);
+ String query = scquery.buildQuery(upSeq);
+ assertEquals("P38398", query);
+
+ // query shouldn't change regardless of additional entries
+ // because 3DBeacons requires canonical entries.
+ upSeq.getAllPDBEntries().clear();
+ query = scquery.buildQuery(upSeq);
+ assertEquals("P38398", query);
+ upSeq.setDBRefs(null);
+ query = scquery.buildQuery(upSeq);
+ /*
+ * legacy projects/datasets will not have canonical flags set for uniprot dbrefs
+ * graceful behaviour would be to
+ * - pick one ? not possible
+ * - iterate through all until a 200 is obtained ?
+ * ---> ideal but could be costly
+ * ---> better to do a direct retrieval from uniprot to work out which is the canonical identifier..
+ * ----> need a test to check that accessions can be promoted to canonical!
+ */
+ assertEquals(null, query);
+
+ // TODO:
+//
+// DBRefEntry uniprotDBRef = new DBRefEntry();
+// uniprotDBRef.setAccessionId("P12345");
+// uniprotDBRef.setSource(DBRefSource.UNIPROT);
+// upSeq.addDBRef(uniprotDBRef);
+//
+// DBRefEntry pdbDBRef = new DBRefEntry();
+// pdbDBRef.setAccessionId("1XYZ");
+// pdbDBRef.setSource(DBRefSource.PDB);
+// upSeq.addDBRef(pdbDBRef);
+//
+// for (int x = 1; x < 5; x++)
+// {
+// DBRefEntry dbRef = new DBRefEntry();
+// dbRef.setAccessionId("XYZ_" + x);
+// seq.addDBRef(dbRef);
+// }
+// System.out.println("");
+// System.out.println(seq.getDBRefs());
+// System.out.println(query);
+// query = scquery.buildQuery(seq);
+// assertEquals(
+// "uniprot_accession:P12345 OR uniprot_id:P12345 OR pdb_id:1xyz",
+// query);
+ }
+
+