JAL-3438 spotless for 2.11.2.0
[jalview.git] / test / jalview / urls / UrlLinkTableModelTest.java
index 7c6f28e..c6d23b9 100644 (file)
 
 package jalview.urls;
 
-import static jalview.util.UrlConstants.DB_ACCESSION;
 import static jalview.util.UrlConstants.DELIM;
 import static jalview.util.UrlConstants.SEP;
+import static jalview.util.UrlConstants.SEQUENCE_ID;
 
+import jalview.urls.api.UrlProviderI;
 import jalview.util.MessageManager;
 
 import java.io.BufferedWriter;
@@ -40,7 +41,8 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-public class UrlLinkTableModelTest {
+public class UrlLinkTableModelTest
+{
 
   private static final String inmenu = "TEST|http://someurl.blah/$DB_ACCESSION$|"
           + "ANOTHER|http://test/t$SEQUENCE_ID$|"
@@ -51,8 +53,7 @@ public class UrlLinkTableModelTest {
   private static final String notinmenu = "Not1|http://not.in.menu/$DB_ACCESSION$|"
           + "Not2|http://not.in.menu.either/$DB_ACCESSION$";
 
-  // Test identifiers.org download file
-  private static final String testIdOrgString = "[{\"id\":\"MIR:00000002\",\"name\":\"ChEBI\",\"pattern\":\"^CHEBI:\\d+$\","
+  private static final String testIdOrgString = "{\"Local\": [{\"id\":\"MIR:00000002\",\"name\":\"ChEBI\",\"pattern\":\"^CHEBI:\\d+$\","
           + "\"definition\":\"Chemical Entities of Biological Interest (ChEBI)\",\"prefix\":\"chebi\","
           + "\"url\":\"http://identifiers.org/chebi\"},{\"id\":\"MIR:00000005\",\"name\":\"UniProt Knowledgebase\","
           + "\"pattern\":\"^([A-N,R-Z][0-9]([A-Z][A-Z, 0-9][A-Z, 0-9][0-9]){1,2})|([O,P,Q][0-9][A-Z, 0-9][A-Z, 0-9][A-Z, 0-9][0-9])(\\.\\d+)?$\","
@@ -60,7 +61,7 @@ public class UrlLinkTableModelTest {
           + "{\"id\":\"MIR:00000011\",\"name\":\"InterPro\",\"pattern\":\"^IPR\\d{6}$\",\"definition\":\"InterPro\",\"prefix\":\"interpro\","
           + "\"url\":\"http://identifiers.org/interpro\"},"
           + "{\"id\":\"MIR:00000372\",\"name\":\"ENA\",\"pattern\":\"^[A-Z]+[0-9]+(\\.\\d+)?$\",\"definition\":\"The European Nucleotide Archive (ENA),\""
-          + "\"prefix\":\"ena.embl\",\"url\":\"http://identifiers.org/ena.embl\"}]";
+          + "\"prefix\":\"ena.embl\",\"url\":\"http://identifiers.org/ena.embl\"}]}";
 
   private UrlProviderI prov;
 
@@ -94,18 +95,19 @@ public class UrlLinkTableModelTest {
     provlist.add(idprov);
     provlist.add(cprov);
 
-    prov = new UrlProvider("MIR:00000005", provlist);
+    prov = new UrlProvider("TEST2", provlist);
   }
 
   /*
    * Test that the table model is correctly initialised
    * Display columns and default row are set; data provider listening event set up
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testInitialisation()
   {
-    int defaultCol = 3;
-    int nameCol = 0;
+    int defaultCol = 4;
+    int dbCol = 0;
+    int descCol = 1;
 
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
 
@@ -123,8 +125,11 @@ public class UrlLinkTableModelTest {
       if (isDefault)
       {
         count++;
-        String defaultName = (String) m.getValueAt(row, nameCol);
-        Assert.assertEquals(defaultName, "UniProt Knowledgebase");
+        String defaultDBName = (String) m.getValueAt(row, dbCol);
+        Assert.assertEquals(defaultDBName, "TEST2");
+
+        String defaultDesc = (String) m.getValueAt(row, descCol);
+        Assert.assertEquals(defaultDesc, "TEST2");
       }
     }
     Assert.assertEquals(count, 1);
@@ -133,45 +138,48 @@ public class UrlLinkTableModelTest {
   /*
    * Test row and column counts
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testCounts()
   {
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
 
     // correct numbers of column and rows
-    Assert.assertEquals(m.getColumnCount(), 4);
+    Assert.assertEquals(m.getColumnCount(), 5);
     Assert.assertEquals(m.getRowCount(), 10);
   }
 
   /*
    * Test column access
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testColumns()
   {
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
 
     // check column names
     Assert.assertEquals(m.getColumnName(0),
-            MessageManager.formatMessage("label.name"));
+            MessageManager.formatMessage("label.database"));
     Assert.assertEquals(m.getColumnName(1),
-            MessageManager.formatMessage("label.url"));
+            MessageManager.formatMessage("label.name"));
     Assert.assertEquals(m.getColumnName(2),
-            MessageManager.formatMessage("label.inmenu"));
+            MessageManager.formatMessage("label.url"));
     Assert.assertEquals(m.getColumnName(3),
-            MessageManager.formatMessage("label.default"));
+            MessageManager.formatMessage("label.inmenu"));
+    Assert.assertEquals(m.getColumnName(4),
+            MessageManager.formatMessage("label.primary"));
 
     // check column classes
     Assert.assertEquals(m.getColumnClass(0), String.class);
     Assert.assertEquals(m.getColumnClass(1), String.class);
-    Assert.assertEquals(m.getColumnClass(2), Boolean.class);
+    Assert.assertEquals(m.getColumnClass(2), String.class);
     Assert.assertEquals(m.getColumnClass(3), Boolean.class);
+    Assert.assertEquals(m.getColumnClass(4), Boolean.class);
   }
 
   /*
    * Test row insertion
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testRowInsert()
   {
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
@@ -180,19 +188,20 @@ public class UrlLinkTableModelTest {
 
     // check table has new row inserted
     Assert.assertEquals(m.getValueAt(10, 0), "newname");
-    Assert.assertEquals(m.getValueAt(10, 1), "newurl");
-    Assert.assertEquals(m.getValueAt(10, 2), true);
-    Assert.assertEquals(m.getValueAt(10, 3), false);
+    Assert.assertEquals(m.getValueAt(10, 1), "newname");
+    Assert.assertEquals(m.getValueAt(10, 2), "newurl");
+    Assert.assertEquals(m.getValueAt(10, 3), true);
+    Assert.assertEquals(m.getValueAt(10, 4), false);
 
     // check data source has new row insrte
-    Assert.assertTrue(prov.getLinksForMenu().contains(
-            "newname" + SEP + "newurl"));
+    Assert.assertTrue(
+            prov.getLinksForMenu().contains("newname" + SEP + "newurl"));
   }
 
   /*
    * Test row deletion
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testRowDelete()
   {
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
@@ -216,7 +225,7 @@ public class UrlLinkTableModelTest {
   /*
    * Test value setting and getting
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testValues()
   {
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
@@ -224,48 +233,57 @@ public class UrlLinkTableModelTest {
     // get original default
     int olddefault;
     boolean isDefault = false;
-    for (olddefault = 0; olddefault < m.getRowCount() && !isDefault; olddefault++)
+    for (olddefault = 0; olddefault < m.getRowCount()
+            && !isDefault; olddefault++)
     {
       isDefault = (boolean) m.getValueAt(olddefault, 3);
     }
 
-    // set new values, one in each row - uneditable
-    m.setValueAt("namechanged", 6, 0);
-    m.setValueAt("urlchanged", 7, 1);
-    m.setValueAt(false, 8, 2);
-    m.setValueAt(true, 9, 3);
+    // set new values, one in each row
+    m.setValueAt("dbnamechanged", 6, 0);
+    m.setValueAt("descchanged", 6, 1);
+    m.setValueAt("urlchanged", 7, 2);
+    m.setValueAt(false, 8, 3);
+    m.setValueAt(true, 6, 4);
+
+    m.setValueAt("dbnamechanged", 5, 0);
 
     // check values updated in table
-    Assert.assertEquals(m.getValueAt(6, 0), "namechanged");
-    Assert.assertEquals(m.getValueAt(7, 1), "urlchanged");
-    Assert.assertFalse((boolean) m.getValueAt(8, 2));
-    Assert.assertTrue((boolean) m.getValueAt(9, 3));
-    Assert.assertFalse((boolean) m.getValueAt(olddefault, 3));
+    Assert.assertEquals(m.getValueAt(6, 0), "descchanged"); // custom url can't
+                                                            // change db name
+    Assert.assertEquals(m.getValueAt(6, 1), "descchanged");
+    Assert.assertEquals(m.getValueAt(7, 2), "urlchanged");
+    Assert.assertFalse((boolean) m.getValueAt(8, 3));
+    Assert.assertTrue((boolean) m.getValueAt(6, 4));
+    Assert.assertFalse((boolean) m.getValueAt(olddefault, 4));
+
+    Assert.assertEquals(m.getValueAt(5, 0), "dbnamechanged");
 
     // check default row is exactly one row still
     for (int row = 0; row < m.getRowCount(); row++)
     {
-      isDefault = (boolean) m.getValueAt(row, 3);
+      isDefault = (boolean) m.getValueAt(row, 4);
 
       // if isDefault is true, row is 9
       // if isDefault is false, row is not 9
-      Assert.assertFalse(isDefault && !(row == 9));
+      Assert.assertFalse(isDefault && !(row == 6));
     }
 
     // check table updated
-    Assert.assertTrue(prov.writeUrlsAsString(true).contains("namechanged" +SEP + m.getValueAt(6, 1)));
-    Assert.assertTrue(prov.writeUrlsAsString(true).contains(m.getValueAt(7,0) + SEP + "urlchanged"));
-    Assert.assertTrue(prov.writeUrlsAsString(false).contains(
-            (String) m.getValueAt(8, 0)));
-    Assert.assertEquals(prov.getDefaultUrl("seqid"), m.getValueAt(9, 1)
-            .toString().replace(DELIM + DB_ACCESSION + DELIM, "seqid"));
-
+    Assert.assertTrue(prov.writeUrlsAsString(true)
+            .contains("descchanged" + SEP + m.getValueAt(6, 2)));
+    Assert.assertTrue(prov.writeUrlsAsString(true)
+            .contains(m.getValueAt(7, 1) + SEP + "urlchanged"));
+    Assert.assertTrue(prov.writeUrlsAsString(false)
+            .contains((String) m.getValueAt(8, 1)));
+    Assert.assertEquals(prov.getPrimaryUrl("seqid"), m.getValueAt(6, 2)
+            .toString().replace(DELIM + SEQUENCE_ID + DELIM, "seqid"));
   }
 
   /*
    * Test cell editability
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testEditable()
   {
     UrlLinkTableModel m = new UrlLinkTableModel(prov);
@@ -274,8 +292,59 @@ public class UrlLinkTableModelTest {
     {
       Assert.assertFalse(m.isCellEditable(row, 0));
       Assert.assertFalse(m.isCellEditable(row, 1));
-      Assert.assertTrue(m.isCellEditable(row, 2));
+      Assert.assertFalse(m.isCellEditable(row, 2));
       Assert.assertTrue(m.isCellEditable(row, 3));
+
+      if ((row == 4) || (row == 6) || (row == 7))
+      {
+        Assert.assertTrue(m.isCellEditable(row, 4));
+      }
+      else
+      {
+        Assert.assertFalse(m.isCellEditable(row, 4));
+      }
+    }
+  }
+
+  /*
+   * Test row 'deletability'
+   */
+  @Test(groups = { "Functional" })
+  public void testDeletable()
+  {
+    UrlLinkTableModel m = new UrlLinkTableModel(prov);
+
+    for (int row = 0; row < m.getRowCount(); row++)
+    {
+      if (row > 4)
+      {
+        Assert.assertTrue(m.isRowDeletable(row));
+      }
+      else
+      {
+        Assert.assertFalse(m.isRowDeletable(row));
+      }
+    }
+  }
+
+  /*
+   * Test indirect row editability
+   */
+  @Test(groups = { "Functional" })
+  public void testRowEditable()
+  {
+    UrlLinkTableModel m = new UrlLinkTableModel(prov);
+
+    for (int row = 0; row < m.getRowCount(); row++)
+    {
+      if (row > 3)
+      {
+        Assert.assertTrue(m.isRowEditable(row));
+      }
+      else
+      {
+        Assert.assertFalse(m.isRowEditable(row));
+      }
     }
   }
 }