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));
+    }
 }