package org.robotframework.swing.tree; import javax.swing.JPopupMenu; import javax.swing.tree.TreePath; import jdave.ExpectationFailedException; import jdave.Specification; import jdave.junit4.JDaveRunner; import org.jmock.Expectations; import org.junit.runner.RunWith; import org.netbeans.jemmy.operators.JPopupMenuOperator; @RunWith(JDaveRunner.class) public class TreePopupMenuOperatorFactorySpec extends Specification<TreePopupMenuOperatorFactory> { public class Any { private TreeOperator treeOperator; private JPopupMenuOperator popupMenuOperator; private JPopupMenu dummyPopupMenu = dummy(JPopupMenu.class); public TreePopupMenuOperatorFactory create() { popupMenuOperator = mock(JPopupMenuOperator.class); treeOperator = mock(TreeOperator.class); return new TreePopupMenuOperatorFactory(treeOperator) { protected JPopupMenuOperator createPopupOperator(JPopupMenu popupMenu) { if (!popupMenu.equals(dummyPopupMenu)) { throw new ExpectationFailedException("Didn't receive the expected argument."); } return popupMenuOperator; } }; } public void createsOperatorByIndex() { checking(new Expectations() {{ one(treeOperator).callPopupOnRow(3); will(returnValue(dummyPopupMenu)); }}); specify(context.createOperator("3"), must.equal(popupMenuOperator)); } public void createsOperatorByNodePath() { final String nodePath = "path|to|node"; final TreePath treePath = dummy(TreePath.class); checking(new Expectations() {{ one(treeOperator).findPath(nodePath); will(returnValue(treePath)); one(treeOperator).callPopupOnPath(treePath); will(returnValue(dummyPopupMenu)); }}); specify(context.createOperator(nodePath), must.equal(popupMenuOperator)); } public void createsOperatorBySelection() { final TreePath[] selectionPaths = new TreePath[0]; checking(new Expectations() {{ one(treeOperator).getSelectionPaths(); will(returnValue(selectionPaths)); one(treeOperator).callPopupOnPaths(selectionPaths); will(returnValue(dummyPopupMenu)); }}); specify(context.createOperatorBySelection(), must.equal(popupMenuOperator)); } } }