/*******************************************************************************
* Copyright (c) 2012-2016 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.extension.machine.client.actions;
import com.google.gwtmockito.GwtMockitoTestRunner;
import org.eclipse.che.api.analytics.client.logger.AnalyticsEventLogger;
import org.eclipse.che.api.machine.gwt.client.MachineManager;
import org.eclipse.che.api.machine.shared.dto.MachineStateDto;
import org.eclipse.che.ide.api.action.ActionEvent;
import org.eclipse.che.ide.extension.machine.client.MachineLocalizationConstant;
import org.eclipse.che.ide.extension.machine.client.machine.Machine;
import org.eclipse.che.ide.extension.machine.client.perspective.widgets.machine.panel.MachinePanelPresenter;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
* @author Dmitry Shnurenko
*/
@RunWith(GwtMockitoTestRunner.class)
public class RestartMachineActionTest {
private static final String SOME_TEXT = "someText";
//constructors mocks
@Mock
private MachinePanelPresenter panelPresenter;
@Mock
private MachineManager machineManager;
@Mock
private MachineLocalizationConstant locale;
@Mock
private AnalyticsEventLogger eventLogger;
//additional mocks
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ActionEvent event;
@Mock
private MachineStateDto machineState;
@Mock
private Machine machine;
@InjectMocks
private RestartMachineAction action;
@Before
public void setUp() {
when(panelPresenter.getSelectedMachineState()).thenReturn(machineState);
}
@Test
public void actionShouldBeUpdatedWhenSelectedMachineIsNotNull() {
when(machineState.getName()).thenReturn(SOME_TEXT);
when(locale.machineRestartTextByName(SOME_TEXT)).thenReturn(SOME_TEXT);
action.updateInPerspective(event);
verify(panelPresenter).getSelectedMachineState();
verify(panelPresenter).isMachineRunning();
verify(machineState).getName();
verify(locale).machineRestartTextByName(SOME_TEXT);
verify(event.getPresentation()).setText(SOME_TEXT);
}
@Test
public void actionShouldBeUpdatedWhenSelectedMachineIsNull() {
reset(locale);
when(panelPresenter.getSelectedMachineState()).thenReturn(null);
when(locale.controlMachineRestartText()).thenReturn(SOME_TEXT);
action.updateInPerspective(event);
verify(panelPresenter).getSelectedMachineState();
verify(event.getPresentation()).setEnabled(false);
verify(machineState, never()).getName();
verify(locale, never()).machineRestartTextByName(SOME_TEXT);
verify(locale).controlMachineRestartText();
verify(event.getPresentation()).setText(SOME_TEXT);
}
@Test
public void actionShouldBePerformed() {
action.updateInPerspective(event);
action.actionPerformed(event);
verify(eventLogger).log(action);
verify(machineManager).restartMachine(machineState);
}
}