/******************************************************************************* * 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.widgets.machine.appliance.processes; import com.google.gwt.user.client.ui.AcceptsOneWidget; import org.eclipse.che.api.machine.gwt.client.MachineServiceClient; import org.eclipse.che.api.machine.shared.dto.MachineProcessDto; import org.eclipse.che.api.promises.client.Operation; import org.eclipse.che.api.promises.client.Promise; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.List; import static org.hamcrest.CoreMatchers.sameInstance; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * @author Dmitry Shnurenko */ @RunWith(MockitoJUnitRunner.class) public class ProcessesPresenterTest { private static final String MACHINE_ID = "someId"; //constructor mocks @Mock private ProcessesView view; @Mock private MachineServiceClient service; //additional mocks @Mock private Promise<List<MachineProcessDto>> processPromise; @Mock private List<MachineProcessDto> descriptors; @Mock private AcceptsOneWidget container; @Captor private ArgumentCaptor<Operation<List<MachineProcessDto>>> operationCaptor; @InjectMocks private ProcessesPresenter presenter; @Test public void constructorShouldBeVerified() { verify(view).setDelegate(presenter); } @Test public void processesShouldBeGot() throws Exception { when(service.getProcesses(MACHINE_ID)).thenReturn(processPromise); presenter.showProcesses(MACHINE_ID); verify(service).getProcesses(MACHINE_ID); verify(processPromise).then(operationCaptor.capture()); operationCaptor.getValue().apply(descriptors); verify(view).setProcesses(descriptors); } @Test public void viewShouldBeAddedToContainer() { presenter.go(container); verify(container).setWidget(view); } @Test public void viewShouldBeReturned() { ProcessesView widget = (ProcessesView)presenter.getView(); assertThat(widget, sameInstance(view)); } @Test public void viewVisibilityShouldBeChanged() { presenter.setVisible(true); verify(view).setVisible(true); } }