diff --git a/CellDesigner-plugin/pom.xml b/CellDesigner-plugin/pom.xml index c1a59b868786807df532bc9397b0742603326cfb..a28ab24e2a288fb3798200e06420ce2d91d238be 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 eb66bf7dedaeb06200507cd72c3dec8c4dd78170..7ccc8d9a62a6f977ac9c21959d75b0ce7f2a99f6 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 3858371717bbd250bc94ccb544968a95d7d23df1..81ad63389408e2296149f2dbb98a597c499b190f 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 0000000000000000000000000000000000000000..ac3ab594b5f6102a3e6b5b62abe5b8123987dbd3 --- /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; + } + +}