package org.jboss.tools.maven.ui.bot.test.project; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.core.condition.ShellWithTextIsAvailable; import org.jboss.reddeer.core.exception.CoreLayerException; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.eclipse.m2e.core.ui.wizard.MavenCheckoutWizard; import org.jboss.reddeer.eclipse.m2e.scm.wizard.MavenCheckoutLocationPage; import org.jboss.reddeer.eclipse.ui.perspectives.JavaEEPerspective; import org.jboss.reddeer.requirements.openperspective.OpenPerspectiveRequirement.OpenPerspective; import org.jboss.reddeer.swt.api.Tree; import org.jboss.reddeer.swt.api.TreeItem; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.tree.DefaultTree; import org.jboss.tools.maven.ui.bot.test.AbstractMavenSWTBotTest; import org.junit.Before; import org.junit.Test; @OpenPerspective(JavaEEPerspective.class) public class SCMCheckoutProject extends AbstractMavenSWTBotTest { @Before public void deleteProjects(){ deleteProjects(true); } @Test public void checkoutAllProjectsFromSCM() { MavenCheckoutWizard mc = new MavenCheckoutWizard(); mc.open(); MavenCheckoutLocationPage ml = new MavenCheckoutLocationPage(); assertEquals(1, ml.getAvailableSCMTypes().size()); ml.setSCMURL("https://github.com/rawagner/eclipse_tutorial"); assertTrue(ml.isCheckoutAllProjects()); assertTrue(ml.isCheckoutHeadRevision()); mc.finish(TimePeriod.getCustom(TimePeriod.LONG.getSeconds() * 2)); ignoreM2eConnectors(); ProjectExplorer pe = new ProjectExplorer(); pe.open(); assertTrue(pe.containsProject("eclipsetutorial")); assertTrue(pe.containsProject("eclipsetutorial.core")); assertTrue(pe.containsProject("eclipsetutorial.feature")); assertTrue(pe.containsProject("eclipsetutorial.site")); assertTrue(pe.containsProject("eclipsetutorial.test")); assertEquals(5,pe.getProjects().size()); } @Test public void checkoutProjectFromSCM() { MavenCheckoutWizard mc = new MavenCheckoutWizard(); mc.open(); MavenCheckoutLocationPage ml = new MavenCheckoutLocationPage(); assertEquals(1, ml.getAvailableSCMTypes().size()); ml.setSCMURL("https://github.com/rawagner/eclipse_tutorial"); assertTrue(ml.isCheckoutAllProjects()); ml.toggleCheckoutAllProjects(false); assertFalse(ml.isCheckoutAllProjects()); assertTrue(ml.isCheckoutHeadRevision()); mc.finish(TimePeriod.getCustom(TimePeriod.LONG.getSeconds() * 2)); new DefaultShell("Import Maven Projects"); new PushButton("Deselect All").click(); Tree t = new DefaultTree(); for(TreeItem ti: t.getAllItems()){ if(ti.getText().contains("eclipsetutorial.core")){ ti.setChecked(true); break; } } new PushButton("Finish").click(); new WaitWhile(new ShellWithTextIsAvailable("Import Maven Projects"),TimePeriod.LONG); new WaitWhile(new JobIsRunning(),TimePeriod.VERY_LONG); ignoreM2eConnectors(); ProjectExplorer pe = new ProjectExplorer(); pe.open(); assertTrue(pe.containsProject("eclipsetutorial.core")); assertEquals(1,pe.getProjects().size()); } private void ignoreM2eConnectors(){ try{ new ShellWithTextIsAvailable("Discover m2e connectors"); new PushButton("Cancel").click(); }catch(CoreLayerException ex){ //The shell "Discover m2e connectors" is shown only if these connectors are not installed. } } }