X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=e42c34c6406d4737b26bbd99b275740091213635;hb=2b8c0785318a3528e1876e8e2dd48b7d831eae69;hp=8f60021831eba332bd7c4e0ebad701cdce63b938;hpb=b3cd7fa160c1323a80af9dd69d13e1a45e7c189c;p=jalview.git diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index 8f60021..e42c34c 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -26,6 +26,7 @@ import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; +import jalview.bin.Cache; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; @@ -34,16 +35,21 @@ import jalview.datamodel.DBRefEntry; import jalview.datamodel.DBRefSource; import jalview.datamodel.HiddenColumns; import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.FileFormat; import jalview.io.FormatAdapter; +import jalview.urls.api.UrlProviderFactoryI; +import jalview.urls.desktop.DesktopUrlProviderFactory; import jalview.util.MessageManager; +import jalview.util.UrlConstants; import java.awt.Component; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -84,6 +90,25 @@ public class PopupMenuTest @BeforeMethod(alwaysRun = true) public void setUp() throws IOException { + Cache.loadProperties("test/jalview/io/testProps.jvprops"); + String inMenuString = ("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$" + + SEQUENCE_ID + + "$" + + "|" + + "UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION + "$") + + "|" + + ("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$" + + DB_ACCESSION + "$") + + "|" + + + // Gene3D entry tests for case (in)sensitivity + ("Gene3D | http://gene3d.biochem.ucl.ac.uk/Gene3D/search?sterm=$" + + DB_ACCESSION + "$&mode=protein"); + + UrlProviderFactoryI factory = new DesktopUrlProviderFactory( + UrlConstants.DEFAULT_LABEL, inMenuString, ""); + Preferences.sequenceUrlLinks = factory.createUrlProvider(); + alignment = new FormatAdapter().readFile(TEST_DATA, DataSourceType.PASTE, FileFormat.Fasta); AlignFrame af = new AlignFrame(alignment, 700, 500); @@ -171,8 +196,12 @@ public class PopupMenuTest testee.configureReferenceAnnotationsMenu(menu, seqs); assertTrue(menu.isEnabled()); String s = MessageManager.getString("label.add_annotations_for"); - String expected = "

" - + s + "
Jmol/secondary structure
PDB/Temp

"; + // String expected = "

" + // + s + "
Jmol/secondary structure
PDB/Temp

"; + String expected = "" + + "
" + s + + "
Jmol/secondary structure
PDB/Temp
"; assertEquals(expected, menu.getToolTipText()); } @@ -194,8 +223,11 @@ public class PopupMenuTest testee.configureReferenceAnnotationsMenu(menu, seqs); assertTrue(menu.isEnabled()); String s = MessageManager.getString("label.add_annotations_for"); - String expected = "

" - + s + "
Jmol/secondary structure
PDB/Temp

"; + // String expected = "

" + // + s + "
Jmol/secondary structure
PDB/Temp

"; + String expected = "" + + "
Add annotations for
Jmol/secondary structure
PDB/Temp
"; assertEquals(expected, menu.getToolTipText()); } @@ -464,109 +496,76 @@ public class PopupMenuTest } /** - * Test for adding feature links + * Test for adding sequence id, dbref and feature links */ @Test(groups = { "Functional" }) - public void testAddFeatureLinks() + public void testBuildLinkMenu() { - // sequences from the alignment List seqs = parentPanel.getAlignment().getSequences(); - - // create list of links and list of DBRefs - List links = new ArrayList<>(); - List refs = new ArrayList<>(); - - // links as might be added into Preferences | Connections dialog - links.add("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$" - + SEQUENCE_ID + "$"); - links.add("UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION - + "$"); - links.add("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$" - + DB_ACCESSION + "$"); - // Gene3D entry tests for case (in)sensitivity - links.add("Gene3D | http://gene3d.biochem.ucl.ac.uk/Gene3D/search?sterm=$" - + DB_ACCESSION + "$&mode=protein"); - - // make seq0 dbrefs - refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527")); - refs.add(new DBRefEntry("INTERPRO", "1", "IPR001041")); - refs.add(new DBRefEntry("INTERPRO", "1", "IPR006058")); - refs.add(new DBRefEntry("INTERPRO", "1", "IPR012675")); - - // make seq1 dbrefs - refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2")); - refs.add(new DBRefEntry("GENE3D", "1", "3.10.20.30")); - - // add all the dbrefs to the sequences: Uniprot 1 each, Interpro all 3 to - // seq0, Gene3D to seq1 - seqs.get(0).addDBRef(refs.get(0)); - - seqs.get(0).addDBRef(refs.get(1)); - seqs.get(0).addDBRef(refs.get(2)); - seqs.get(0).addDBRef(refs.get(3)); - - seqs.get(1).addDBRef(refs.get(4)); - seqs.get(1).addDBRef(refs.get(5)); + final SequenceI seq0 = seqs.get(0); + final SequenceI seq1 = seqs.get(1); + final List noFeatures = Collections + . emptyList(); + final String linkText = MessageManager.getString("action.link"); + + seq0.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527")); + seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR001041")); + seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR012675")); + seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR006058")); + seq1.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2")); + seq1.addDBRef(new DBRefEntry("GENE3D", "1", "3.10.20.30")); - // get the Popup Menu for first sequence - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(0), links); - Component[] seqItems = testee.sequenceMenu.getMenuComponents(); - JMenu linkMenu = (JMenu) seqItems[6]; + /* + * check the Link Menu for the first sequence + */ + JMenu linkMenu = PopupMenu.buildLinkMenu(seq0, noFeatures); + assertEquals(linkText, linkMenu.getText()); Component[] linkItems = linkMenu.getMenuComponents(); - // check the number of links are the expected number + /* + * menu items are ordered: SEQUENCE_ID search first, then dbrefs in order + * of database name (and within that by order of dbref addition) + */ assertEquals(5, linkItems.length); - - // first entry is EMBL-EBI which just uses sequence id not accession id? assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText()); + assertEquals("INTERPRO|IPR001041", + ((JMenuItem) linkItems[1]).getText()); + assertEquals("INTERPRO|IPR012675", + ((JMenuItem) linkItems[2]).getText()); + assertEquals("INTERPRO|IPR006058", + ((JMenuItem) linkItems[3]).getText()); + assertEquals("UNIPROT|P83527", ((JMenuItem) linkItems[4]).getText()); - // sequence id for each link should match corresponding DB accession id - for (int i = 1; i < 4; i++) - { - assertEquals(refs.get(i - 1).getSource(), ((JMenuItem) linkItems[i]) - .getText().split("\\|")[0]); - assertEquals(refs.get(i - 1).getAccessionId(), - ((JMenuItem) linkItems[i]) - .getText().split("\\|")[1]); - } - - // get the Popup Menu for second sequence - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(1), links); - seqItems = testee.sequenceMenu.getMenuComponents(); - linkMenu = (JMenu) seqItems[6]; + /* + * check the Link Menu for the second sequence + * note dbref GENE3D is matched to link Gene3D, the latter is displayed + */ + linkMenu = PopupMenu.buildLinkMenu(seq1, noFeatures); + assertEquals(linkText, linkMenu.getText()); linkItems = linkMenu.getMenuComponents(); - - // check the number of links are the expected number assertEquals(3, linkItems.length); - - // first entry is EMBL-EBI which just uses sequence id not accession id? assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText()); + assertEquals("Gene3D|3.10.20.30", ((JMenuItem) linkItems[1]).getText()); + assertEquals("UNIPROT|Q9ZTS2", ((JMenuItem) linkItems[2]).getText()); - // sequence id for each link should match corresponding DB accession id - for (int i = 1; i < 3; i++) - { - assertEquals(refs.get(i + 3).getSource(), ((JMenuItem) linkItems[i]) - .getText().split("\\|")[0].toUpperCase()); - assertEquals(refs.get(i + 3).getAccessionId(), - ((JMenuItem) linkItems[i]).getText().split("\\|")[1]); - } - - // if there are no valid links the Links submenu is disabled - List nomatchlinks = new ArrayList<>(); - nomatchlinks.add("NOMATCH | http://www.uniprot.org/uniprot/$" - + DB_ACCESSION + "$"); - - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(0), - nomatchlinks); - seqItems = testee.sequenceMenu.getMenuComponents(); - linkMenu = (JMenu) seqItems[6]; - assertFalse(linkMenu.isEnabled()); - + /* + * if there are no valid links the Links submenu is still shown, but + * reduced to the EMBL-EBI lookup only (inserted by + * CustomUrlProvider.choosePrimaryUrl()) + */ + String unmatched = "NOMATCH|http://www.uniprot.org/uniprot/$" + + DB_ACCESSION + "$"; + UrlProviderFactoryI factory = new DesktopUrlProviderFactory(null, + unmatched, ""); + Preferences.sequenceUrlLinks = factory.createUrlProvider(); + + linkMenu = PopupMenu.buildLinkMenu(seq1, noFeatures); + assertEquals(linkText, linkMenu.getText()); + linkItems = linkMenu.getMenuComponents(); + assertEquals(1, linkItems.length); + assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText()); } - /** - * Test for adding feature links - */ @Test(groups = { "Functional" }) public void testHideInsertions() { @@ -597,7 +596,7 @@ public class PopupMenuTest .revealAllHiddenColumns(sel); // get the Popup Menu for 7th sequence - no insertions - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(7), null); + testee = new PopupMenu(parentPanel, seqs.get(7), null); testee.hideInsertions_actionPerformed(null); HiddenColumns hidden = parentPanel.av.getAlignment().getHiddenColumns(); @@ -605,7 +604,7 @@ public class PopupMenuTest assertFalse(it.hasNext()); // get the Popup Menu for GappySeq - this time we have insertions - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(4), null); + testee = new PopupMenu(parentPanel, seqs.get(4), null); testee.hideInsertions_actionPerformed(null); hidden = parentPanel.av.getAlignment().getHiddenColumns(); it = hidden.iterator(); @@ -655,7 +654,7 @@ public class PopupMenuTest hidden.hideColumns(31, 40); // get the Popup Menu for LessGappySeq in the sequence group - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(5), null); + testee = new PopupMenu(parentPanel, seqs.get(5), null); testee.hideInsertions_actionPerformed(null); hidden = parentPanel.av.getAlignment().getHiddenColumns(); it = hidden.iterator();