Mercurial > hg > release > thermostat-0.4
changeset 306:06e72761b055
Add simple tests to MainWindowController
review-by: rkennke
review-thread: http://icedtea.classpath.org/pipermail/thermostat/2012-May/001349.html
PR 979
author | Mario Torre <neugens.limasoftware@gmail.com> |
---|---|
date | Wed, 16 May 2012 13:29:27 +0200 |
parents | 724f56f1a360 |
children | edd01fa07b0d |
files | client/core/src/main/java/com/redhat/thermostat/client/MainView.java client/core/src/main/java/com/redhat/thermostat/client/MainWindowControllerImpl.java client/core/src/main/java/com/redhat/thermostat/client/ui/MainWindow.java client/core/src/test/java/com/redhat/thermostat/client/MainWindowControllerImplTest.java |
diffstat | 4 files changed, 53 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/client/core/src/main/java/com/redhat/thermostat/client/MainView.java Tue May 15 16:09:46 2012 +0200 +++ b/client/core/src/main/java/com/redhat/thermostat/client/MainView.java Wed May 16 13:29:27 2012 +0200 @@ -38,6 +38,7 @@ import java.awt.Component; +import com.redhat.thermostat.client.osgi.service.VMContextAction; import com.redhat.thermostat.common.ActionListener; import com.redhat.thermostat.common.dao.Ref; @@ -72,5 +73,5 @@ void setSubView(Component view); - void registerVMContextAction(String name, String description, String id); + void registerVMContextAction(VMContextAction action); }
--- a/client/core/src/main/java/com/redhat/thermostat/client/MainWindowControllerImpl.java Tue May 15 16:09:46 2012 +0200 +++ b/client/core/src/main/java/com/redhat/thermostat/client/MainWindowControllerImpl.java Wed May 16 13:29:27 2012 +0200 @@ -89,8 +89,6 @@ private boolean showHistory; private VmInformationControllerProvider vmInfoControllerProvider; - - private Map<String, VMContextAction> vmContextActions; public MainWindowControllerImpl(UiFacadeFactory facadeFactory, MainView view) { this.facadeFactory = facadeFactory; @@ -109,11 +107,8 @@ initializeTimer(); logger.log(Level.INFO, "registering VMContextActions actions to view"); - vmContextActions = new HashMap<>(); for (VMContextAction action : facadeFactory.getVMContextActions()) { - String id = action.getClass().getName(); - vmContextActions.put(id, action); - view.registerVMContextAction(action.getName(), action.getDescription(), id); + view.registerVMContextAction(action); } updateView(); @@ -220,10 +215,9 @@ private void handleVMHooks(ActionEvent<MainView.Action> event) { Object payload = event.getPayload(); - if (payload instanceof String) { + if (payload instanceof VMContextAction) { try { - VMContextAction action = vmContextActions.get(payload); - // TODO + VMContextAction action = (VMContextAction) payload; action.execute((VmRef) view.getSelectedHostOrVm()); } catch (Throwable error) { logger.log(Level.SEVERE, "");
--- a/client/core/src/main/java/com/redhat/thermostat/client/ui/MainWindow.java Tue May 15 16:09:46 2012 +0200 +++ b/client/core/src/main/java/com/redhat/thermostat/client/ui/MainWindow.java Wed May 16 13:29:27 2012 +0200 @@ -444,18 +444,17 @@ } @Override - public void registerVMContextAction(String name, String description, String id) { + public void registerVMContextAction(final VMContextAction action) { JMenuItem contextAction = new JMenuItem(); - contextAction.setText(name); - contextAction.setToolTipText(description); + contextAction.setText(action.getName()); + contextAction.setToolTipText(action.getDescription()); vmContextMenu.add(contextAction); - contextAction.setActionCommand(id); contextAction.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { - fireViewAction(Action.VM_CONTEXT_ACTION, e.getActionCommand()); + fireViewAction(Action.VM_CONTEXT_ACTION, action); } }); } @@ -579,7 +578,7 @@ actionNotifier.fireAction(action); } - private void fireViewAction(Action action, String payload) { + private void fireViewAction(Action action, VMContextAction payload) { actionNotifier.fireAction(action, payload); }
--- a/client/core/src/test/java/com/redhat/thermostat/client/MainWindowControllerImplTest.java Tue May 15 16:09:46 2012 +0200 +++ b/client/core/src/test/java/com/redhat/thermostat/client/MainWindowControllerImplTest.java Wed May 16 13:29:27 2012 +0200 @@ -60,6 +60,7 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; +import com.redhat.thermostat.client.osgi.service.VMContextAction; import com.redhat.thermostat.client.ui.SummaryController; import com.redhat.thermostat.client.ui.SummaryView; import com.redhat.thermostat.client.ui.VmInformationController; @@ -93,6 +94,9 @@ private HostInfoDAO mockHostsDAO; private VmInfoDAO mockVmsDAO; + private VMContextAction action1; + private VMContextAction action2; + @BeforeClass public static void setUpOnce() { // TODO remove when controller uses mocked objects rather than real swing objects @@ -115,7 +119,6 @@ uiFacadeFactory = mock(UiFacadeFactory.class); when(uiFacadeFactory.getSummary()).thenReturn(summaryController); - setupDAOs(); // Setup View @@ -129,11 +132,29 @@ when(viewFactory.getView(SummaryView.class)).thenReturn(summaryView); ApplicationContext.getInstance().setViewFactory(viewFactory); + setUpVMContextActions(); + controller = new MainWindowControllerImpl(uiFacadeFactory, view); l = grabListener.getValue(); } + private void setUpVMContextActions() { + action1 = mock(VMContextAction.class); + when(action1.getName()).thenReturn("action1"); + when(action1.getDescription()).thenReturn("action1desc"); + + action2 = mock(VMContextAction.class); + when(action2.getName()).thenReturn("action2"); + when(action2.getDescription()).thenReturn("action2desc"); + + Collection<VMContextAction> actions = new ArrayList<>(); + actions.add(action1); + actions.add(action2); + + when(uiFacadeFactory.getVMContextActions()).thenReturn(actions); + } + private void setupDAOs() { mockHostsDAO = mock(HostInfoDAO.class); mockVmsDAO = mock(VmInfoDAO.class); @@ -301,4 +322,25 @@ assertEquals(3, id); } + + @Test + public void verityVMActionsAreRegistered() { + + verify(view).registerVMContextAction(action1); + verify(view).registerVMContextAction(action2); + } + + @Test + public void verityVMActionsAreExecuted() { + + VmRef vmRef = mock(VmRef.class); + when(view.getSelectedHostOrVm()).thenReturn(vmRef); + + ActionEvent<MainView.Action> event = new ActionEvent<>(view, MainView.Action.VM_CONTEXT_ACTION); + event.setPayload(action1); + l.actionPerformed(event); + + verify(action1, times(1)).execute(any(VmRef.class)); + verify(action2, times(0)).execute(any(VmRef.class)); + } }