/******************************************************************************* * 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.*; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.eclipse.ui.problems.ProblemsView; import org.jboss.reddeer.eclipse.ui.problems.ProblemsView.ProblemType; import org.jboss.reddeer.junit.internal.runner.ParameterizedRequirementsRunnerFactory; import org.jboss.reddeer.junit.runner.RedDeerSuite; import org.jboss.reddeer.requirements.db.DatabaseRequirement.Database; import org.jboss.reddeer.swt.impl.menu.ContextMenu; import org.jboss.reddeer.swt.impl.menu.ShellMenu; import org.jboss.reddeer.workbench.impl.editor.TextEditor; import org.jboss.tools.hibernate.reddeer.jdt.ui.jpa.process.wizard.HibernateJPAWizard; 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; /** * Test generates JPA annotations on plain POJO class * @author jpeterka * */ @RunWith(RedDeerSuite.class) @UseParametersRunnerFactory(ParameterizedRequirementsRunnerFactory.class) @Database(name="testdb") public class JpaAnnotationGenerationTest extends HibernateRedDeerTest { private final String PCKG = "org.test"; @Parameter public String prj; @Parameter(1) public String hbVersion; @Parameter(2) public String jpaVersion; @Parameters(name="hibernate {1}") public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { {"mvn-hibernate35","3.5","2.0"}, {"mvn-hibernate36","3.6","2.0"}, {"mvn-hibernate40","4.0","2.0"}, {"mvn-hibernate43","4.3","2.1"}, {"mvn-hibernate50","5.0","2.1"}, {"mvn-hibernate51","5.1","2.1"}, {"mvn-hibernate52","5.2","2.1"}, }); } @Before public void prepare() { importMavenProject(prj); try { Path dogLocation = new File("resources/classes/Dog.java").toPath(); Path ownerLocation = new File("resources/classes/Owner.java").toPath(); new File("target/"+prj+"/src/main/java/org/test").mkdirs(); Files.copy(dogLocation, new FileOutputStream("target/"+prj+"/src/main/java/org/test/Dog.java")); Files.copy(ownerLocation, new FileOutputStream("target/"+prj+"/src/main/java/org/test/Owner.java")); } catch (IOException e) { e.printStackTrace(); fail("Unable to find pom "+prj); } ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(prj).refresh(); } @After public void cleanUp() { deleteAllProjects(); } @Test public void testGenerateJPAHibernateAnnotations() { selectItem("Dog"); new ContextMenu("Source","Generate Hibernate/JPA annotations...").select(); postCheck("Dog"); selectItem("Owner"); new ShellMenu("Source","Generate Hibernate/JPA annotations...").select(); postCheck("Owner"); } private void postCheck(String clazz) { HibernateJPAWizard jpaWizard = new HibernateJPAWizard(); jpaWizard.next(); jpaWizard.finish(); ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(prj).getProjectItem("Java Resources","src/main/java",PCKG,clazz+".java").open(); TextEditor editor = new TextEditor(clazz+".java"); assertTrue(editor.getText().contains("@Entity")); ProblemsView pw = new ProblemsView(); pw.open(); assertEquals(0, pw.getProblems(ProblemType.ERROR).size()); assertEquals(0, pw.getProblems(ProblemType.WARNING).size()); } private void selectItem(String clazz) { ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(prj).getProjectItem("Java Resources","src/main/java",PCKG,clazz+".java").select(); } }