/******************************************************************************* * Copyright (c) 2017 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.hibernate.reddeer.test; import java.util.Arrays; import java.util.Collection; import org.jboss.reddeer.common.exception.WaitTimeoutExpiredException; import org.jboss.reddeer.common.logging.Logger; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.junit.internal.runner.ParameterizedRequirementsRunnerFactory; import org.jboss.reddeer.junit.requirement.inject.InjectRequirement; import org.jboss.reddeer.junit.runner.RedDeerSuite; import org.jboss.reddeer.requirements.db.DatabaseConfiguration; import org.jboss.reddeer.requirements.db.DatabaseRequirement; import org.jboss.reddeer.requirements.db.DatabaseRequirement.Database; import org.jboss.reddeer.swt.impl.menu.ContextMenu; import org.jboss.tools.hibernate.reddeer.console.EditConfigurationMainPage; import org.jboss.tools.hibernate.reddeer.console.EditConfigurationMainPage.PredefinedConnection; import org.jboss.tools.hibernate.reddeer.console.views.KnownConfigurationsView; import org.jboss.tools.hibernate.reddeer.console.wizards.NewConfigurationFirstPage; import org.jboss.tools.hibernate.reddeer.console.wizards.NewConfigurationWizard; import org.jboss.tools.hibernate.reddeer.console.wizards.NewConfigurationWizardPage; import org.jboss.tools.hibernate.reddeer.console.EditConfigurationShell; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized.Parameter; import org.junit.runners.Parameterized.Parameters; import org.junit.runners.Parameterized.UseParametersRunnerFactory; /** * Console configuration test * Creates Hibernate Configuration file (cfg.xml) * @author Jiri Peterka * */ @RunWith(RedDeerSuite.class) @UseParametersRunnerFactory(ParameterizedRequirementsRunnerFactory.class) @Database(name="testdb") public class ConsoleConfigurationTest extends HibernateRedDeerTest { private Logger log = Logger.getLogger(ConsoleConfigurationTest.class); @Parameter public String prjName; @Parameter(1) public String hbVersion; private String HIBERNATE_CFG_FILE="src/hibernate.cfg.xml"; private String CONSOLE_NAME="hibernateconsoletest"; @Parameters(name="hibernate {1}") public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { {"mvn-hibernate35", "3.5"}, {"mvn-hibernate36", "3.6"}, {"mvn-hibernate40", "4.0"}, {"mvn-hibernate43", "4.3"}, {"mvn-hibernate50", "5.0"}, {"mvn-hibernate51", "5.1"}, {"mvn-hibernate52", "5.2"} }); } @InjectRequirement private DatabaseRequirement dbRequirement; @Before public void prepare() { importMavenProject(prjName); } @After public void clean() { KnownConfigurationsView v = new KnownConfigurationsView(); v.open(); v.deleteConsoleConfiguration(CONSOLE_NAME); deleteAllProjects(); } @Test public void testConsoleConfiguration() { prepareConsoleConfigurationFile(hbVersion); prepareConsoleConfiguration(hbVersion); } public void prepareConsoleConfigurationFile(String hibernateVersion) { DatabaseConfiguration cfg = dbRequirement.getConfiguration(); NewConfigurationWizard wizard = new NewConfigurationWizard(); wizard.open(); NewConfigurationFirstPage p1 = new NewConfigurationFirstPage(); p1.setLocation(prjName,"src"); wizard.next(); NewConfigurationWizardPage p2 = new NewConfigurationWizardPage(); p2.setDatabaseDialect("H2"); p2.setDriverClass(cfg.getDriverClass()); p2.setConnectionURL(cfg.getJdbcString()); p2.setUsername(cfg.getUsername()); p2.setHibernateVersion(hibernateVersion); wizard.finish(); } public void prepareConsoleConfiguration(String hibernateVersion) { KnownConfigurationsView v = new KnownConfigurationsView(); v.open(); EditConfigurationShell s = v.addConfiguration(); s.setName(CONSOLE_NAME); EditConfigurationMainPage p = s.getMainPage(); p.setProject(prjName); p.setDatabaseConnection(PredefinedConnection.HIBERNATE_CONFIGURED_CONNECTION); p.setConfigurationFile("/"+prjName+"/"+HIBERNATE_CFG_FILE); p.setHibernateVersion(hibernateVersion); //ANY ERROR IN WIZARD ?? s.ok(); v.open(); EditConfigurationShell s2 = v.openConsoleConfiguration(CONSOLE_NAME); s2.close(); v.open(); try{ v.selectNode(CONSOLE_NAME,"Database","SAKILA.PUBLIC","ACTOR"); } catch (WaitTimeoutExpiredException e) { log.info("Wait timeout occured, try rebuilding console config"); v.selectConsole(CONSOLE_NAME); new ContextMenu("Rebuild configuration").select(); new WaitWhile(new JobIsRunning()); v.selectNode(CONSOLE_NAME,"Database","SAKILA.PUBLIC","ACTOR"); } } }