/*******************************************************************************
* 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.perspective.terminal.container;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import org.eclipse.che.ide.extension.machine.client.inject.factories.TerminalFactory;
import org.eclipse.che.ide.extension.machine.client.machine.Machine;
import org.eclipse.che.ide.extension.machine.client.machine.events.MachineStateEvent;
import org.eclipse.che.ide.extension.machine.client.perspective.terminal.TerminalPresenter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
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(MockitoJUnitRunner.class)
public class TerminalContainerTest {
//constructor mocks
@Mock
private TerminalContainerView view;
@Mock
private TerminalFactory terminalFactory;
@Mock
private Machine machineState;
@Mock
private TerminalPresenter terminal;
@Mock
private AcceptsOneWidget oneWidget;
@Mock
private MachineStateEvent machineStateEvent;
@InjectMocks
private TerminalContainer container;
@Test
public void terminalShouldBeAdded() {
when(terminalFactory.create(machineState)).thenReturn(terminal);
container.addOrShowTerminal(machineState);
verify(terminalFactory).create(machineState);
verify(view).addTerminal(terminal);
verify(terminal, never()).connect();
verify(view, never()).showTerminal(terminal);
}
@Test
public void terminalShouldBeShown() {
when(terminalFactory.create(machineState)).thenReturn(terminal);
container.addOrShowTerminal(machineState);
reset(view, terminalFactory);
container.addOrShowTerminal(machineState);
verify(terminal).connect();
verify(view).showTerminal(terminal);
verify(terminalFactory, never()).create(machineState);
verify(view, never()).addTerminal(terminal);
}
@Test
public void visibilityShouldBeChanged() {
container.setVisible(true);
verify(view).setVisible(true);
}
@Test
public void widgetShouldBeSetToContainer() {
container.go(oneWidget);
verify(oneWidget).setWidget(view);
}
@Test
public void onMachineShouldBeDestroyed() {
when(terminalFactory.create(machineState)).thenReturn(terminal);
container.addOrShowTerminal(machineState);
verify(terminalFactory).create(machineState);
reset(terminalFactory);
when(terminalFactory.create(machineState)).thenReturn(terminal);
container.onMachineDestroyed(machineStateEvent);
container.addOrShowTerminal(machineState);
verify(terminalFactory).create(machineState);
}
}