package org.jboss.tools.cdi.bot.test.beansxml.template;
import static org.junit.Assert.*;
import java.util.List;
import org.jboss.reddeer.common.logging.Logger;
import org.jboss.reddeer.common.wait.TimePeriod;
import org.jboss.reddeer.common.wait.WaitUntil;
import org.jboss.reddeer.swt.impl.styledtext.DefaultStyledText;
import org.jboss.reddeer.workbench.api.Editor;
import org.jboss.reddeer.workbench.condition.EditorHasValidationMarkers;
import org.jboss.reddeer.workbench.impl.editor.DefaultEditor;
import org.jboss.reddeer.workbench.impl.editor.Marker;
import org.jboss.tools.cdi.bot.test.CDITestBase;
import org.jboss.tools.cdi.reddeer.common.model.ui.editor.EditorPartWrapper;
import org.junit.After;
import org.junit.Test;
public class BeansXMLUITemplate extends CDITestBase{
private static final Logger logger = Logger.getLogger(BeansXMLUITemplate.class);
protected String CDIVersion = null;
@After
public void cleanup(){
deleteAllProjects();
}
@Test
public void testBeanDiscoveryModes(){
EditorPartWrapper beans = beansXMLHelper.openBeansXml(PROJECT_NAME);
beans.activateTreePage();
assertTrue(beans.isBeanDiscoveryModeEnabled());
assertEquals("annotated", beans.getBeanDiscoveryMode());
List<String> modes = beans.getBeanDiscoveryModes();
logger.debug("Discovery modes:");
for(String mode: modes){
logger.debug(" "+mode);
}
assertEquals(3, modes.size());
assertTrue(modes.contains("all"));
assertTrue(modes.contains("none"));
assertTrue(modes.contains("annotated"));
}
@Test
public void testBeanDiscoveryTreeEditing(){
EditorPartWrapper beans = beansXMLHelper.openBeansXml(PROJECT_NAME);
beans.activateTreePage();
beans.setBeanDiscoveryMode("non-existing-mode");
//TODO check error marker
setAndCheckTreeDiscoveryMode(beans, "all");
setAndCheckTreeDiscoveryMode(beans, "none");
setAndCheckTreeDiscoveryMode(beans, "annotated");
}
@Test
public void testBeanDiscoverySourceEditing(){
EditorPartWrapper beans = beansXMLHelper.openBeansXml(PROJECT_NAME);
setAndCheckSourceDiscoveryMode(beans, "non-existing-mode", 2, "org.eclipse.ui.workbench.texteditor.error");
setAndCheckSourceDiscoveryMode(beans, "annotated", 0, null);
}
@Test
public void testBeansVersion(){
EditorPartWrapper beans = beansXMLHelper.openBeansXml(PROJECT_NAME);
beans.activateTreePage();
assertEquals(CDIVersion, beans.getVersion());
}
@Test
public void testBeansName(){
EditorPartWrapper beans = beansXMLHelper.openBeansXml(PROJECT_NAME);
beans.activateTreePage();
assertEquals("beans", beans.getName());
}
private void setAndCheckTreeDiscoveryMode(EditorPartWrapper beans, String mode){
beans.activateTreePage();
beans.selectBeanDiscoveryMode(mode);
beans.activateSourcePage();
DefaultStyledText st = new DefaultStyledText();
st.getText().contains("bean-discovery-mode=\""+mode+"\"");
DefaultEditor te = new DefaultEditor();
assertEquals(0,te.getMarkers().size());
beans.save();
assertEquals(0,te.getMarkers().size());
}
private void setAndCheckSourceDiscoveryMode(EditorPartWrapper beans, String mode, int expectedNumberOfErrors, String type){
beans.activateTreePage();
String currentMode = beans.getBeanDiscoveryMode();
beans.activateSourcePage();
DefaultStyledText ds = new DefaultStyledText();
String s = ds.getText().replace(currentMode, mode);
ds.setText(s);
Editor e = new DefaultEditor();
e.save();
new WaitUntil(new EditorHasValidationMarkers(e),TimePeriod.NORMAL,false);
List<Marker> markers = e.getMarkers();
assertEquals(expectedNumberOfErrors,markers.size());
for(Marker m: markers){
m.getType().equals(type);
}
beans.activateTreePage();
assertEquals(mode,beans.getBeanDiscoveryMode());
beans.save();
}
}