org.eclipse.egit.ui.wizards.pull.PullWizardTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.egit.ui.wizards.pull.PullWizardTest.java

Source

/*******************************************************************************
 * Copyright (c) 2016 Red Hat Inc. and others
 *
 * 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:
 *    Mickael Istria (Red Hat Inc.) - Initial implementation
 *******************************************************************************/
package org.eclipse.egit.ui.wizards.pull;

import static org.eclipse.swtbot.swt.finder.waits.Conditions.waitForShell;
import static org.junit.Assert.assertTrue;

import java.io.File;

import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.internal.UIText;
import org.eclipse.egit.ui.view.repositories.GitRepositoriesViewTestBase;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jgit.annotations.NonNull;
import org.eclipse.jgit.util.SystemReader;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.matchers.AbstractMatcher;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.hamcrest.Description;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(SWTBotJunit4ClassRunner.class)
public class PullWizardTest extends GitRepositoriesViewTestBase {

    private static final class ShellWithTextPrefixMatcher extends AbstractMatcher<Shell> {
        private String prefix;

        private SWTBotShell foundShell;

        public ShellWithTextPrefixMatcher(@NonNull String prefix) {
            this.prefix = prefix;
        }

        @Override
        public void describeTo(Description arg0) {
            arg0.appendText("With title starting by '" + this.prefix + "'");
        }

        @Override
        protected boolean doMatch(Object item) {
            SWTBotShell shell = new SWTBotShell((Shell) item);
            if (shell.getText().startsWith(this.prefix)) {
                this.foundShell = shell;
                return true;
            }
            return false;
        }

        public SWTBotShell getFoundShell() {
            return this.foundShell;
        }
    }

    @AfterClass
    public static void afterClass() {
        SystemReader.setInstance(null);
    }

    private File repositoryFile;

    @Before
    public void setUp() throws Exception {
        deleteAllProjects();
        clearView();
        repositoryFile = createProjectAndCommitToRepository();
        createRemoteRepository(repositoryFile);
        Activator.getDefault().getRepositoryUtil().addConfiguredRepository(repositoryFile);
        refreshAndWait();
        assertHasRepo(repositoryFile);
    }

    @Test
    public void pullFromProjectRepo() throws Exception {
        SWTBotTree repositoriesTree = getOrOpenView().bot().tree();
        repositoriesTree.select(0);
        repositoriesTree.contextMenu("Pull...").click();
        bot.shell("Pull").setFocus();
        assertTrue("Remote combo misses items", bot.comboBox().items().length > 1);
        bot.textWithLabel(UIText.PullWizardPage_referenceLabel).setText("master");
        bot.button(IDialogConstants.FINISH_LABEL).click();
        ShellWithTextPrefixMatcher shellWithTextPrefixMatcher = new ShellWithTextPrefixMatcher("Pull Result");
        bot.waitUntil(waitForShell(shellWithTextPrefixMatcher));
        shellWithTextPrefixMatcher.getFoundShell().setFocus();
        bot.button(IDialogConstants.OK_LABEL).click();
    }

}