From 613522847ed59ee795fb08103cfe2f5ad2369b93 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 15 Mar 2019 13:02:53 +0100
Subject: [PATCH] unit tests for CopyAction

---
 CellDesigner-plugin/pom.xml                   |   8 ++
 .../cdplugin/copypaste/CopyAction.java        |   7 --
 .../cdplugin/copypaste/AllCopyPasteTests.java |   3 +-
 .../cdplugin/copypaste/CopyActionTest.java    | 114 ++++++++++++++++++
 4 files changed, 124 insertions(+), 8 deletions(-)
 create mode 100644 CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyActionTest.java

diff --git a/CellDesigner-plugin/pom.xml b/CellDesigner-plugin/pom.xml
index c1a59b8687..a28ab24e2a 100644
--- a/CellDesigner-plugin/pom.xml
+++ b/CellDesigner-plugin/pom.xml
@@ -89,6 +89,14 @@
 			<scope>test</scope>
 		</dependency>
 
+		<!-- mockito used for testing -->
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>${mockito.version}</version>
+			<scope>test</scope>
+		</dependency>
+
 	</dependencies>
 
 </project>
\ No newline at end of file
diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyAction.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyAction.java
index eb66bf7ded..7ccc8d9a62 100644
--- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyAction.java
+++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyAction.java
@@ -2,7 +2,6 @@ package lcsb.mapviewer.cdplugin.copypaste;
 
 import org.apache.log4j.Logger;
 
-import jp.sbi.celldesigner.MainWindow;
 import jp.sbi.celldesigner.plugin.PluginListOf;
 import jp.sbi.celldesigner.plugin.PluginReaction;
 import jp.sbi.celldesigner.plugin.PluginSBase;
@@ -34,12 +33,6 @@ public class CopyAction extends CopyPasteAbstractAction {
    *          - list of species to annotate
    */
   public void performAnnotation(CopyPastePlugin plug, PluginListOf speciesList) {
-
-    // if list is empty then just return from the method
-    if (speciesList.size() == 0) {
-      return;
-    }
-
     SystemClipboard sc = new SystemClipboard();
 
     int size = speciesList.size();
diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java
index 3858371717..81ad633894 100644
--- a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java
+++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java
@@ -5,7 +5,8 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
-@SuiteClasses({ CopyPasteAbstractActionTest.class })
+@SuiteClasses({ CopyActionTest.class,
+    CopyPasteAbstractActionTest.class })
 public class AllCopyPasteTests {
 
 }
diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyActionTest.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyActionTest.java
new file mode 100644
index 0000000000..ac3ab594b5
--- /dev/null
+++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyActionTest.java
@@ -0,0 +1,114 @@
+package lcsb.mapviewer.cdplugin.copypaste;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import jp.sbi.celldesigner.plugin.PluginListOf;
+import jp.sbi.celldesigner.plugin.PluginReaction;
+import jp.sbi.celldesigner.plugin.PluginSpecies;
+import jp.sbi.celldesigner.plugin.PluginSpeciesAlias;
+import lcsb.mapviewer.common.SystemClipboard;
+
+public class CopyActionTest {
+  String rdfString = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:vCard=\"http://www.w3.org/2001/vcard-rdf/3.0#\" xmlns:bqbiol=\"http://biomodels.net/biology-qualifiers/\" xmlns:bqmodel=\"http://biomodels.net/model-qualifiers/\">\n"
+      +
+      "<rdf:Description rdf:about=\"#s3\">\n" +
+      "<bqmodel:is>\n" +
+      "<rdf:Bag>\n" +
+      "<rdf:li rdf:resource=\"urn:miriam:wikipedia.en:1\"/>\n" +
+      "</rdf:Bag>\n" +
+      "</bqmodel:is>\n" +
+      "</rdf:Description>\n" +
+      "</rdf:RDF>\n";
+
+  Logger logger = Logger.getLogger(CopyActionTest.class);
+
+  SystemClipboard cp = new SystemClipboard();
+
+  @Test
+  public void testCopyFromSpecies() {
+    CopyAction action = new CopyAction();
+    String data = cp.getClipboardContents();
+
+    PluginListOf list = createPluginListWithSpecies(2);
+    action.performAnnotation(Mockito.mock(CopyPastePlugin.class), list);
+
+    String newData = cp.getClipboardContents();
+
+    assertNotEquals("Data in clipboard didn't change", data, newData);
+  }
+
+  @Test
+  public void testCopyFromReaction() {
+    CopyAction action = new CopyAction();
+    String data = cp.getClipboardContents();
+
+    PluginListOf list = createPluginListWithReaction(2);
+    action.performAnnotation(Mockito.mock(CopyPastePlugin.class), list);
+
+    String newData = cp.getClipboardContents();
+
+    assertNotEquals("Data in clipboard didn't change", data, newData);
+  }
+
+  @Test
+  public void testCopyFromEmptyList() {
+    CopyAction action = new CopyAction();
+    String data = cp.getClipboardContents();
+
+    PluginListOf list = createPluginListWithSpecies(0);
+    action.performAnnotation(Mockito.mock(CopyPastePlugin.class), list);
+
+    String newData = cp.getClipboardContents();
+
+    assertEquals("Data in clipboard didn't change", data, newData);
+  }
+
+  private PluginListOf createPluginListWithSpecies(int size) {
+    PluginListOf list = Mockito.mock(PluginListOf.class);
+
+    Mockito.when(list.size()).thenReturn(size);
+    for (int i = 0; i < size; i++) {
+      PluginSpeciesAlias alias = createSpeciesAlias("id" + i);
+      Mockito.when(list.get(i)).thenReturn(alias);
+    }
+    return list;
+  }
+
+  private PluginListOf createPluginListWithReaction(int size) {
+    PluginListOf list = Mockito.mock(PluginListOf.class);
+
+    Mockito.when(list.size()).thenReturn(size);
+    for (int i = 0; i < size; i++) {
+      PluginReaction reaction = createReaction("id" + i);
+      Mockito.when(list.get(i)).thenReturn(reaction);
+    }
+    return list;
+  }
+
+  private PluginSpeciesAlias createSpeciesAlias(String id) {
+    PluginSpecies species = Mockito.mock(PluginSpecies.class);
+    Mockito.when(species.getId()).thenReturn(id);
+    Mockito.when(species.getAnnotationString()).thenReturn(rdfString);
+    Mockito.when(species.getNotesString()).thenReturn("spceies some notes" + id);
+
+    PluginSpeciesAlias speciesAlias = Mockito.mock(PluginSpeciesAlias.class);
+    Mockito.when(speciesAlias.getSpecies()).thenReturn(species);
+    return speciesAlias;
+  }
+
+  private PluginReaction createReaction(String id) {
+
+    PluginReaction reaction = Mockito.mock(PluginReaction.class);
+    Mockito.when(reaction.getId()).thenReturn("re" + id);
+    Mockito.when(reaction.getAnnotationString()).thenReturn(rdfString);
+    Mockito.when(reaction.getNotesString()).thenReturn("re notes" + id);
+
+    return reaction;
+  }
+
+}
-- 
GitLab