/******************************************************************************* * 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 static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collection; import org.jboss.reddeer.eclipse.jdt.ui.packageexplorer.PackageExplorer; 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.workbench.impl.editor.DefaultEditor; 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.wizards.SelectConnectionProfileDialog; import org.jboss.tools.hibernate.ui.bot.test.factory.ConnectionProfileFactory; import org.jboss.tools.hibernate.ui.bot.test.factory.DriverDefinitionFactory; 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; @RunWith(RedDeerSuite.class) @UseParametersRunnerFactory(ParameterizedRequirementsRunnerFactory.class) @Database(name="testdb") public class ConsoleConfigurationFileTest extends HibernateRedDeerTest { private String HIBERNATE_CFG_FILE="hibernate.cfg.xml"; @Parameter public String prjName; @Parameter(1) public String hbVersion; @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() { deleteAllProjects(); } @Test public void createConfigurationFileFromDatasource() { // Create datasource DatabaseConfiguration cfg = dbRequirement.getConfiguration(); DriverDefinitionFactory.createDatabaseDriverDefinition(cfg); ConnectionProfileFactory.createConnectionProfile(cfg); NewConfigurationWizard wizard = new NewConfigurationWizard(); wizard.open(); NewConfigurationFirstPage p1 = new NewConfigurationFirstPage(); p1.setLocation(prjName,"src"); wizard.next(); NewConfigurationWizardPage p2 = new NewConfigurationWizardPage(); SelectConnectionProfileDialog connectionDialog = p2.getValuesFromConnection(); connectionDialog.setProfileName(cfg.getProfileName()); connectionDialog.ok(); // Check values p2.setHibernateVersion(hbVersion); assertTrue("jdbc must match", p2.getConnectionURL().equals(cfg.getJdbcString())); assertTrue("driver must match", p2.getDriveClass().equals(cfg.getDriverClass())); assertTrue("username must match", p2.getUsername().equals(cfg.getUsername())); wizard.finish(); checkFile(false); } @Test public void testCreateConfigurationFile() { NewConfigurationWizard wizard = createConfigFile(); wizard.finish(); checkFile(false); } @Test public void testCreateConfigurationFileWithConsole() { NewConfigurationWizard wizard = createConfigFile(); NewConfigurationWizardPage p2 = new NewConfigurationWizardPage(); p2.setCreateConsoleConfiguration(true); wizard.finish(); checkFile(true); } private NewConfigurationWizard createConfigFile(){ NewConfigurationWizard wizard = new NewConfigurationWizard(); wizard.open(); NewConfigurationFirstPage p1 = new NewConfigurationFirstPage(); p1.setLocation(prjName,"src"); wizard.next(); DatabaseConfiguration cfg = dbRequirement.getConfiguration(); NewConfigurationWizardPage p2 = new NewConfigurationWizardPage(); p2.setHibernateVersion(hbVersion); p2.setConnectionURL(cfg.getJdbcString()); p2.setUsername(cfg.getUsername()); return wizard; } private void checkFile(boolean generateConsole) { PackageExplorer pe = new PackageExplorer(); pe.open(); pe.getProject(prjName).getProjectItem("src",HIBERNATE_CFG_FILE).open(); new DefaultEditor(HIBERNATE_CFG_FILE); if (generateConsole) { KnownConfigurationsView v = new KnownConfigurationsView(); v.selectConsole(prjName); } } }