/*******************************************************************************
* Copyright (c) 2012-2017 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.ext.git.client;
import com.google.web.bindery.event.shared.EventBus;
import org.eclipse.che.api.git.shared.Branch;
import org.eclipse.che.api.git.shared.LogResponse;
import org.eclipse.che.api.git.shared.MergeResult;
import org.eclipse.che.api.git.shared.Remote;
import org.eclipse.che.api.git.shared.Revision;
import org.eclipse.che.api.git.shared.ShowFileContentResponse;
import org.eclipse.che.api.git.shared.Status;
import org.eclipse.che.api.promises.client.Operation;
import org.eclipse.che.api.promises.client.Promise;
import org.eclipse.che.api.promises.client.PromiseError;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.dialogs.DialogFactory;
import org.eclipse.che.ide.api.git.GitServiceClient;
import org.eclipse.che.ide.api.machine.DevMachine;
import org.eclipse.che.ide.api.notification.NotificationManager;
import org.eclipse.che.ide.api.resources.File;
import org.eclipse.che.ide.api.resources.Folder;
import org.eclipse.che.ide.api.resources.Project;
import org.eclipse.che.ide.api.resources.Resource;
import org.eclipse.che.ide.dto.DtoFactory;
import org.eclipse.che.ide.ext.git.client.outputconsole.GitOutputConsole;
import org.eclipse.che.ide.ext.git.client.outputconsole.GitOutputConsoleFactory;
import org.eclipse.che.ide.processes.panel.ProcessesPanelPresenter;
import org.eclipse.che.ide.resource.Path;
import org.eclipse.che.ide.rest.DtoUnmarshallerFactory;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.List;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Base test for git extension.
*
* @author Andrey Plotnikov
*/
@RunWith(MockitoJUnitRunner.class)
public abstract class BaseTest {
public static final String PROJECT_PATH = "/test";
public static final String FILE_1_PATH = "/test/a/file_1";
public static final String FILE_2_PATH = "/test/a/file_2";
public static final String FOLDER_1_PATH = "/test/a";
public static final String FOLDER_2_PATH = "/test/a";
public static final boolean SELECTED_ITEM = true;
public static final boolean UNSELECTED_ITEM = false;
public static final boolean ENABLE_BUTTON = true;
public static final boolean DISABLE_BUTTON = false;
public static final boolean ENABLE_FIELD = true;
public static final boolean DISABLE_FIELD = false;
public static final boolean ACTIVE_BRANCH = true;
public static final String EMPTY_TEXT = "";
public static final String PROJECT_NAME = "test";
public static final String REMOTE_NAME = "codenvy";
public static final String LOCALE_URI = "http://codenvy.com/git/workspace/test";
public static final String REMOTE_URI = "git@github.com:codenvy/test.git";
public static final String REPOSITORY_NAME = "origin";
public static final String LOCAL_BRANCH = "localBranch";
public static final String REMOTE_BRANCH = "remoteBranch";
public static final String WS_ID = "id";
@Mock
protected Project project;
@Mock
protected AppContext appContext;
@Mock
protected DevMachine devMachine;
@Mock
protected GitServiceClient service;
@Mock
protected GitLocalizationConstant constant;
@Mock
protected GitOutputConsole console;
@Mock
protected GitOutputConsoleFactory gitOutputConsoleFactory;
@Mock
protected ProcessesPanelPresenter processesPanelPresenter;
@Mock
protected GitResources resources;
@Mock
protected EventBus eventBus;
@Mock
protected NotificationManager notificationManager;
@Mock
protected DtoFactory dtoFactory;
@Mock
protected DtoUnmarshallerFactory dtoUnmarshallerFactory;
@Mock
protected DialogFactory dialogFactory;
@Mock
protected PromiseError promiseError;
@Mock
protected Throwable throwable;
@Mock
protected File file_1;
@Mock
protected File file_2;
@Mock
protected Folder folder_1;
@Mock
protected Folder folder_2;
@Mock
protected Promise<Status> statusPromise;
@Captor
protected ArgumentCaptor<Operation<Status>> statusPromiseCaptor;
@Captor
protected ArgumentCaptor<Operation<PromiseError>> promiseErrorCaptor;
@Mock
protected Promise<Void> voidPromise;
@Captor
protected ArgumentCaptor<Operation<Void>> voidPromiseCaptor;
@Mock
protected Promise<List<Branch>> branchListPromise;
@Captor
protected ArgumentCaptor<Operation<List<Branch>>> branchListCaptor;
@Mock
protected Promise<Branch> branchPromise;
@Captor
protected ArgumentCaptor<Operation<Branch>> branchCaptor;
@Mock
protected Promise<Resource[]> synchronizePromise;
@Captor
protected ArgumentCaptor<Operation<Resource[]>> synchronizeCaptor;
@Mock
protected Promise<Revision> revisionPromise;
@Captor
protected ArgumentCaptor<Operation<Revision>> revisionCaptor;
@Mock
protected Promise<List<Remote>> remoteListPromise;
@Captor
protected ArgumentCaptor<Operation<List<Remote>>> remoteListCaptor;
@Mock
protected Promise<MergeResult> mergeResultPromise;
@Captor
protected ArgumentCaptor<Operation<MergeResult>> mergeResultCaptor;
@Mock
protected Promise<String> stringPromise;
@Captor
protected ArgumentCaptor<Operation<String>> stringCaptor;
@Mock
protected Promise<LogResponse> logPromise;
@Captor
protected ArgumentCaptor<Operation<LogResponse>> logCaptor;
@Mock
protected Promise<ShowFileContentResponse> showPromise;
@Captor
protected ArgumentCaptor<Operation<ShowFileContentResponse>> showCaptor;
@Before
public void disarm() {
when(project.getName()).thenReturn(PROJECT_NAME);
when(project.getLocation()).thenReturn(Path.valueOf(PROJECT_PATH));
when(gitOutputConsoleFactory.create(anyString())).thenReturn(console);
when(file_1.getLocation()).thenReturn(Path.valueOf(FILE_1_PATH));
when(file_2.getLocation()).thenReturn(Path.valueOf(FILE_2_PATH));
when(folder_1.getLocation()).thenReturn(Path.valueOf(FOLDER_1_PATH));
when(folder_2.getLocation()).thenReturn(Path.valueOf(FOLDER_2_PATH));
when(promiseError.getMessage()).thenReturn("error");
when(promiseError.getCause()).thenReturn(throwable);
when(throwable.getMessage()).thenReturn("error");
when(project.synchronize()).thenReturn(synchronizePromise);
DevMachine devMachine = mock(DevMachine.class);
when(devMachine.getId()).thenReturn("id");
when(appContext.getDevMachine()).thenReturn(devMachine);
}
}