/*******************************************************************************
* 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 org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer;
import org.jboss.reddeer.eclipse.ui.dialogs.ExplorerItemPropertyDialog;
import org.jboss.reddeer.junit.runner.RedDeerSuite;
import org.jboss.reddeer.requirements.db.DatabaseRequirement.Database;
import org.jboss.reddeer.swt.impl.combo.DefaultCombo;
import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem;
import org.jboss.tools.hibernate.reddeer.jdt.ui.wizards.NewHibernateMappingElementsSelectionPage2;
import org.jboss.tools.hibernate.reddeer.jdt.ui.wizards.NewHibernateMappingFilePage;
import org.jboss.tools.hibernate.reddeer.jdt.ui.wizards.NewHibernateMappingFileWizard;
import org.jboss.tools.hibernate.reddeer.jdt.ui.wizards.NewHibernateMappingPreviewPage;
import org.jboss.tools.hibernate.reddeer.ui.xml.editor.Hibernate3CompoundEditor;
import org.jboss.tools.hibernate.ui.bot.test.XPathHelper;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Hibernate mapping file (hbm.xml) test
* @author Jiri Peterka
*
*/
@RunWith(RedDeerSuite.class)
@Database(name="testdb")
public class MappingFileTest extends HibernateRedDeerTest {
//TODO use latest
public static final String PRJ = "mvn-hibernate52";
public static final String PCKG = "org.test";
public static final String PCKG_CLZ = "org.test.clazz";
@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"));
new File("target/"+PRJ+"/src/main/java/org/test/clazz").mkdirs();
Path ownerClazzLocation = new File("resources/classes/Owner.javaclazz").toPath();
Files.copy(ownerClazzLocation, new FileOutputStream("target/"+PRJ+"/src/main/java/org/test/clazz/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 clean(){
deleteAllProjects();
}
@Test
public void createMappingFileFromPackage() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(PRJ).getProjectItem("Java Resources","src/main/java",PCKG).select();
NewHibernateMappingFileWizard wizard = new NewHibernateMappingFileWizard();
wizard.open();
NewHibernateMappingElementsSelectionPage2 selPage = new NewHibernateMappingElementsSelectionPage2();
selPage.selectItem(PCKG);
wizard.next();
NewHibernateMappingFilePage files = new NewHibernateMappingFilePage();
assertEquals(2, files.getClasses().size());
wizard.next();
NewHibernateMappingPreviewPage preview = new NewHibernateMappingPreviewPage();
assertTrue("Preview text cannot be empty", !preview.getPreviewText().equals(""));
wizard.finish();
pe.open();
assertTrue("Hbm.xml not generated: Known issue(s): JBIDE-18769, JBIDE-20042",
pe.getProject(PRJ).containsItem("Java Resources","src/main/java",PCKG,"Dog.hbm.xml"));
pe.getProject(PRJ).getProjectItem("Java Resources","src/main/java",PCKG,"Dog.hbm.xml").open();
Hibernate3CompoundEditor hme = new Hibernate3CompoundEditor("Dog.hbm.xml");
hme.activateSourceTab();
String sourceText = hme.getSourceText();
XPathHelper xph = XPathHelper.getInstance();
String table = xph.getMappingFileTable(PCKG + ".Dog", sourceText);
assertTrue(table.equals("DOG"));
pe.open();
pe.getProject(PRJ).getProjectItem("Java Resources","src/main/java",PCKG,"Owner.hbm.xml").open();
hme = new Hibernate3CompoundEditor("Owner.hbm.xml");
hme.activateSourceTab();
sourceText = hme.getSourceText();
table = xph.getMappingFileTable(PCKG + ".Owner", sourceText);
assertEquals("OWNER", table);
}
@Test
public void createMappingFileFromFile() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(PRJ).getProjectItem("Java Resources","src/main/java",PCKG_CLZ,"Owner.java").select();
NewHibernateMappingFileWizard wizard = new NewHibernateMappingFileWizard();
wizard.open();
NewHibernateMappingElementsSelectionPage2 selPage = new NewHibernateMappingElementsSelectionPage2();
selPage.selectItem("Owner");
wizard.next();
NewHibernateMappingFilePage files = new NewHibernateMappingFilePage();
files.selectClasses("Owner");
wizard.next();
NewHibernateMappingPreviewPage preview = new NewHibernateMappingPreviewPage();
assertTrue("Preview text cannot be empty", !preview.getPreviewText().equals(""));
wizard.finish();
pe.open();
assertTrue("Hbm.xml not generated: Known issue(s): JBIDE-18769, JBIDE-20042",
pe.getProject(PRJ).containsItem("Java Resources","src/main/java",PCKG_CLZ,"Owner.hbm.xml"));
pe.getProject(PRJ).getProjectItem("Java Resources","src/main/java",PCKG_CLZ,"Owner.hbm.xml").open();
String fileName = "Owner.hbm.xml";
Hibernate3CompoundEditor hme = new Hibernate3CompoundEditor(fileName);
hme.activateSourceTab();
String sourceText = hme.getSourceText();
XPathHelper xph = XPathHelper.getInstance();
String table = xph.getMappingFileTable(PCKG_CLZ + ".Owner", sourceText);
assertEquals("OWNER", table);
}
//JBIDE-21766
@Test
public void createMappingFilePackageWithNoConfig(){
ProjectExplorer pe = new ProjectExplorer();
pe.open();
ExplorerItemPropertyDialog pd = new ExplorerItemPropertyDialog(pe.getProject(PRJ));
pd.open();
new DefaultTreeItem("Hibernate Settings").select();
new DefaultCombo().setSelection("<None>");
pd.ok();
createMappingFileFromPackage();
}
//JBIDE-21766
@Test
public void createMappingFileWithNoConfig(){
ProjectExplorer pe = new ProjectExplorer();
pe.open();
ExplorerItemPropertyDialog pd = new ExplorerItemPropertyDialog(pe.getProject(PRJ));
pd.open();
new DefaultTreeItem("Hibernate Settings").select();
new DefaultCombo().setSelection("<None>");
pd.ok();
createMappingFileFromFile();
}
}