}
/**
- * Test for adding feature links
+ * Test for adding sequence id, dbref and feature links
*/
@Test(groups = { "Functional" })
- public void testAddFeatureLinks()
+ public void testConstructor_links()
{
- // sequences from the alignment
List<SequenceI> seqs = parentPanel.getAlignment().getSequences();
-
- // create list of links and list of DBRefs
- List<String> links = new ArrayList<>();
- List<DBRefEntry> 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
- SequenceI seq = seqs.get(0);
- seq.addDBRef(refs.get(0));
-
- seq.addDBRef(refs.get(1));
- seq.addDBRef(refs.get(2));
- seq.addDBRef(refs.get(3));
+ final SequenceI seq0 = seqs.get(0);
+ final SequenceI seq1 = seqs.get(1);
+ final List<SequenceFeature> noFeatures = Collections
+ .<SequenceFeature> 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"));
- seqs.get(1).addDBRef(refs.get(4));
- seqs.get(1).addDBRef(refs.get(5));
-
- // get the Popup Menu for first sequence
- List<SequenceFeature> noFeatures = Collections.<SequenceFeature> emptyList();
- testee = new PopupMenu(parentPanel, seq, noFeatures);
+ /*
+ * check the Popup Menu for the first sequence
+ */
+ testee = new PopupMenu(parentPanel, seq0, noFeatures);
Component[] seqItems = testee.sequenceMenu.getMenuComponents();
JMenu linkMenu = (JMenu) seqItems[6];
+ 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++)
- {
- String msg = seq.getName() + " link[" + i + "]";
- assertEquals(msg, refs.get(i - 1).getSource(),
- ((JMenuItem) linkItems[i])
- .getText().split("\\|")[0]);
- assertEquals(msg, refs.get(i - 1).getAccessionId(),
- ((JMenuItem) linkItems[i])
- .getText().split("\\|")[1]);
- }
-
- // get the Popup Menu for second sequence
- seq = seqs.get(1);
- testee = new PopupMenu(parentPanel, seq, noFeatures);
+ /*
+ * check the Popup Menu for second sequence
+ * note dbref GENE3D is matched to link Gene3D, the latter is displayed
+ */
+ testee = new PopupMenu(parentPanel, seq1, noFeatures);
seqItems = testee.sequenceMenu.getMenuComponents();
linkMenu = (JMenu) seqItems[6];
+ 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++)
- {
- String msg = seq.getName() + " link[" + i + "]";
- assertEquals(msg, refs.get(i + 3).getSource(),
- ((JMenuItem) linkItems[i])
- .getText().split("\\|")[0].toUpperCase());
- assertEquals(msg, refs.get(i + 3).getAccessionId(),
- ((JMenuItem) linkItems[i]).getText().split("\\|")[1]);
- }
-
- // if there are no valid links the Links submenu is disabled
- List<String> nomatchlinks = new ArrayList<>();
- nomatchlinks.add("NOMATCH | http://www.uniprot.org/uniprot/$"
- + DB_ACCESSION + "$");
+ /*
+ * 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();
- testee = new PopupMenu(parentPanel, seq, noFeatures);
+ testee = new PopupMenu(parentPanel, seq1, noFeatures);
seqItems = testee.sequenceMenu.getMenuComponents();
linkMenu = (JMenu) seqItems[6];
- assertFalse(linkMenu.isEnabled());
-
+ 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()
{