package org.jboss.tools.batch.ui.bot.test.wizard; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertTrue; import org.jboss.reddeer.common.logging.Logger; import org.jboss.reddeer.core.exception.CoreLayerException; import org.jboss.reddeer.eclipse.wst.xml.ui.tabletree.XMLMultiPageEditor; import org.jboss.reddeer.eclipse.wst.xml.ui.tabletree.XMLSourcePage; import org.jboss.reddeer.workbench.impl.editor.DefaultEditor; import org.jboss.tools.batch.reddeer.editor.JavaClassEditor; import org.jboss.tools.batch.reddeer.wizard.BatchArtifacts; import org.jboss.tools.batch.reddeer.wizard.NewBatchArtifactWizardDialog; import org.jboss.tools.batch.reddeer.wizard.NewBatchArtifactWizardPage; import org.jboss.tools.batch.ui.bot.test.AbstractBatchTest; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; public abstract class AbstractCreateArtifactTest extends AbstractBatchTest { protected static final String NAMED_ANNOTATION = "Named"; protected abstract String getClassName(); protected abstract BatchArtifacts getArtifact(); protected abstract void createArtifactHook(NewBatchArtifactWizardPage page); private static Logger log = Logger.getLogger(AbstractCreateArtifactTest.class); @Override protected String getPackage() { return "batch.test.wizard.artifact"; } @BeforeClass public static void setUpBeforeClass() { initTestResources(log, "projects/" + getProjectName() + ".zip"); } @AfterClass public static void tearDownAfterClass() { removeProject(log); } @After public void tearDown(){ try { new DefaultEditor(getClassName() + ".java").close(); } catch (CoreLayerException e) { // nothing to do } } protected void createArtifact() { NewBatchArtifactWizardDialog dialog = new NewBatchArtifactWizardDialog(); dialog.open(); NewBatchArtifactWizardPage page = new NewBatchArtifactWizardPage(); page.setPackage(getPackage()); page.setName(getClassName()); page.setArtifact(getArtifact()); createArtifactHook(page); dialog.finish(); } protected void assertEditorIsActivated() { assertTrue(getEditor().isActive()); } protected void assertClassName() { assertThat(getEditor().getClassName(), is(getClassName())); } protected JavaClassEditor getEditor(){ return new JavaClassEditor(getClassName() + ".java"); } protected String getClassByID(String id) { if (!getProject().containsItem(BATCH_XML_FILE_FULL_PATH)){ // the batch.xml file has not been created yet and the <ref value has not been inserted -> this is OK return ""; } getProject().getProjectItem(BATCH_XML_FILE_FULL_PATH).open(); XMLMultiPageEditor editor = new XMLMultiPageEditor(BATCH_XML_FILE); editor.activate(); XMLSourcePage sourceTab = editor.getSourcePage(); String xPath = "/:batch-artifacts/:ref[@id=\"" + id + "\"]/@class"; return sourceTab.evaluateXPath(xPath); } protected String getClass(String clazz) { if (!getProject().containsItem(BATCH_XML_FILE_FULL_PATH)){ // the batch.xml file has not been created yet and the <ref value has not been inserted -> this is OK return ""; } getProject().getProjectItem(BATCH_XML_FILE_FULL_PATH).open(); XMLMultiPageEditor editor = new XMLMultiPageEditor(BATCH_XML_FILE); String xPath = "/:batch-artifacts/:ref[@class=\"" + clazz + "\"]"; return editor.getSourcePage().evaluateXPath(xPath); } }