/******************************************************************************* * 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.fail; import java.util.Arrays; import java.util.Collection; import org.jboss.reddeer.common.exception.RedDeerException; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; 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.condition.EntityIsGenerated; import org.jboss.tools.hibernate.ui.bot.test.factory.ConnectionProfileFactory; import org.jboss.tools.hibernate.ui.bot.test.factory.DriverDefinitionFactory; import org.jboss.tools.hibernate.ui.bot.test.factory.EntityGenerationFactory; import org.jboss.tools.hibernate.ui.bot.test.factory.ProjectConfigurationFactory; import org.junit.After; 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; /** * Test prepares project and generate JPA entities from database * @author Jiri Peterka */ @RunWith(RedDeerSuite.class) @UseParametersRunnerFactory(ParameterizedRequirementsRunnerFactory.class) @Database(name="testdb") public class JPAEntityGenerationTest extends HibernateRedDeerTest { @Parameter public String prj; @Parameter(1) public String hbVersion; @Parameter(2) public String jpaVersion; @Parameter(3) public boolean useConsole; @Parameters(name="hibernate {1} use console: {3}") public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { {"mvn-hibernate35-ent","3.5","2.0", true}, {"mvn-hibernate35-ent","3.5","2.0", false}, {"mvn-hibernate36-ent","3.6","2.0", true}, {"mvn-hibernate36-ent","3.6","2.0", false}, {"mvn-hibernate40-ent","4.0","2.0", true}, {"mvn-hibernate40-ent","4.0","2.0", false}, {"mvn-hibernate43-ent","4.3","2.1", true}, {"mvn-hibernate43-ent","4.3","2.1", false}, {"mvn-hibernate50-ent","5.0","2.1", true}, {"mvn-hibernate50-ent","5.0","2.1", false}, {"mvn-hibernate51-ent","5.1","2.1", true}, {"mvn-hibernate51-ent","5.1","2.1", false}, {"mvn-hibernate52-ent","5.2","2.1", true}, {"mvn-hibernate52-ent","5.2","2.1", false} }); } @InjectRequirement private DatabaseRequirement dbRequirement; @After public void cleanUp() { DatabaseConfiguration cfg = dbRequirement.getConfiguration(); ConnectionProfileFactory.deleteConnectionProfile(cfg.getProfileName()); deleteAllProjects(); } private void prepare() { importMavenProject(prj); DatabaseConfiguration cfg = dbRequirement.getConfiguration(); DriverDefinitionFactory.createDatabaseDriverDefinition(cfg); ConnectionProfileFactory.createConnectionProfile(cfg); ProjectConfigurationFactory.setProjectFacetForDB(prj, cfg, jpaVersion); } @Test public void testEntityGeneration() { testEntityGeneration(useConsole); } private void testEntityGeneration(boolean useHibernateConsole) { prepare(); DatabaseConfiguration cfg = dbRequirement.getConfiguration(); EntityGenerationFactory.generateJPAEntities(cfg,prj,"org.gen",hbVersion,useHibernateConsole); ProjectExplorer pe = new ProjectExplorer(); pe.open(); try{ new WaitUntil(new EntityIsGenerated(prj, "src/main/java","org.gen","Actor.java")); pe.getProject(prj).getProjectItem("Java Resources","src/main/java","org.gen","Actor.java").open(); } catch (RedDeerException e) { e.printStackTrace(); fail("Entities not generated, possible cause https://issues.jboss.org/browse/JBIDE-19175"); } new DefaultEditor("Actor.java"); } }