/*******************************************************************************
* Copyright (c) 2007-2016 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.easymport.ui.bot.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.File;
import java.util.List;
import org.jboss.reddeer.core.handler.ShellHandler;
import org.jboss.reddeer.eclipse.core.resources.Project;
import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer;
import org.jboss.reddeer.eclipse.ui.problems.Problem;
import org.jboss.reddeer.eclipse.ui.problems.ProblemsView;
import org.jboss.reddeer.eclipse.ui.problems.ProblemsView.ProblemType;
import org.jboss.reddeer.eclipse.ui.views.log.LogMessage;
import org.jboss.reddeer.eclipse.ui.views.log.LogView;
import org.jboss.tools.easymport.reddeer.wizard.ImportedProject;
import org.jboss.tools.easymport.reddeer.wizard.ProjectProposal;
import org.jboss.tools.easymport.reddeer.wizard.SmartImportRootWizardPage;
import org.jboss.tools.easymport.reddeer.wizard.SmartImportWizard;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
public abstract class ProjectTestTemplate {
@After
public void cleanup() {
ShellHandler.getInstance().closeAllNonWorbenchShells();
for (Project p : new ProjectExplorer().getProjects()) {
p.delete(false);
}
// empty error log
LogView logView = new LogView();
logView.open();
logView.deleteLog();
}
@BeforeClass
public static void setupClass(){
LogView logView = new LogView();
logView.open();
logView.deleteLog();
}
@Test
public void testImport() {
SmartImportWizard easymportWizard = new SmartImportWizard();
easymportWizard.open();
SmartImportRootWizardPage selectImportRootWizardPage = new SmartImportRootWizardPage();
String path = getProjectPath().getAbsolutePath();
selectImportRootWizardPage.selectDirectory(path);
selectImportRootWizardPage.setSearchForNestedProjects(true);
selectImportRootWizardPage.setDetectAndConfigureNatures(true);
//check proposals
List<ProjectProposal> allProjectProposals = selectImportRootWizardPage.getAllProjectProposals();
List<ProjectProposal> expectedProposals = getExpectedProposals();
assertEquals(expectedProposals.size(), allProjectProposals.size());
for (ProjectProposal projectProposal : allProjectProposals) {
if (!expectedProposals.contains(projectProposal)) {
fail("Expected proposals: " + expectedProposals.toString() + ", actual proposals: "
+ allProjectProposals.toString());
}
}
easymportWizard.finish();
//check imported project
checkErrorLog();
checkProblemsView();
cehckImportedProject();
}
private void checkErrorLog() {
LogView logView = new LogView();
logView.open();
List<LogMessage> errorMessages = logView.getErrorMessages();
assertEquals("There are errors in error log: "+errorMessages, 0, errorMessages.size());
}
private void checkProblemsView() {
ProblemsView problemsView = new ProblemsView();
problemsView.open();
List<Problem> problems = problemsView.getProblems(ProblemType.ERROR);
assertEquals("There should be no errors in imported project", 0, problems.size());
}
abstract File getProjectPath();
abstract List<ProjectProposal> getExpectedProposals();
abstract List<ImportedProject> getExpectedImportedProjects();
/**
* Checks whether the project was imported correctly.
*
*/
abstract void cehckImportedProject();
}