package org.jboss.tools.jsf.model.pv.test;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import junit.framework.TestCase;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import org.jboss.tools.common.model.XModel;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.project.IModelNature;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
import org.jboss.tools.jsf.model.pv.JSFPromptingProvider;
import org.jboss.tools.jst.web.project.WebProject;
import org.jboss.tools.jst.web.project.list.IWebPromptingProvider;
import org.jboss.tools.jst.web.project.list.WebPromptingProvider;
import org.jboss.tools.test.util.ResourcesUtils;
public class JSFPromptingProviderTest extends TestCase {
public static final String TEST_PROJECT_NAME = "JSFPromptingProviderTestProject";
public static final String TEST_PROJECT_PATH = "/projects/" + TEST_PROJECT_NAME;
IProject project = null;
IModelNature nature = null;
XModel model = null;
JSFPromptingProvider provider = null;
@Override
protected void setUp() throws Exception {
boolean saveAutoBuild = ResourcesUtils.setBuildAutomatically(false);
project = (IProject)ResourcesPlugin.getWorkspace().getRoot().findMember(TEST_PROJECT_NAME);
if(project==null) {
throw new Exception("no project");
}
project.build(IncrementalProjectBuilder.FULL_BUILD, null);
nature = EclipseResourceUtil.getModelNature(project);
assertNotNull(nature);
model = nature.getModel();
assertNotNull(model);
provider = new JSFPromptingProvider();
}
public void testIsSupporting() {
assertTrue(provider.isSupporting(IWebPromptingProvider.JSF_BUNDLES));
}
public void testGetList() {
List<Object> list = provider.getList(model, "", "", new Properties());
assertEquals("Empty list should be returned for unsupported id.",IWebPromptingProvider.EMPTY_LIST, list);
}
/******************************************************************
* getBundles method test
******************************************************************/
public static final int GET_BUNDLE_EXPECTED_LIST_SIZE = 1;
/**
*
*/
public void testGetBundles() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_BUNDLES, "", new Properties());
assertEquals("Bundles proposal list has wrong size",GET_BUNDLE_EXPECTED_LIST_SIZE, list.size());
}
public static final int GET_BUNDLE_PROPERTIES_EXPECTED_LIST_SIZE = 3;
public void testGetBundleProperties() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_BUNDLE_PROPERTIES, "org.jboss.tools.jsf.test.Bundle", new Properties());
assertEquals("Bundles properties proposal list has wrong size",GET_BUNDLE_PROPERTIES_EXPECTED_LIST_SIZE, list.size());
}
/**
* Test bundle declared in a Java project included to dependencies.
*/
public void testGetBundleProperties2() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_BUNDLE_PROPERTIES, "demo.labels", new Properties());
assertEquals("Bundles properties proposal list has wrong size", 2, list.size());
}
/**
* Expected beans list size
*/
public static final int GET_BEANS_EXPECTED_LIST_SIZE = 12;
/**
* <code>JSFPromptingProvider.getBundles()</code> method test
*/
public void testGetBeans() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_MANAGED_BEANS, null, new Properties());
assertEquals("Managed Beans proposal list has wrong size",GET_BEANS_EXPECTED_LIST_SIZE, list.size());
}
public static final int GET_BEAN_PROPERTIES_LIST_SIZE = 5;
public void testGetBeanProperties() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_BEAN_PROPERTIES, "mbean1.", new Properties());
assertEquals("Bean properties proposal list has wrong size",GET_BEAN_PROPERTIES_LIST_SIZE, list.size());
}
public static final int BUILD_BEAN_PROPERTIES_LIST_SIZE = 5;
public void testBuildBeanProperties() {
List list = provider.buildBeanProperties(model, "org.jboss.tools.jsf.test.ManagedBean1", null);
assertEquals("Bean properties proposal list has wrong size",BUILD_BEAN_PROPERTIES_LIST_SIZE, list.size());
}
public void testGetBeanMethods() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_BEAN_METHODS, "mbean2", new Properties());
assertEquals(1, list.size());
}
public void testGetViewActions() {
Properties p = new Properties();
p.setProperty(IWebPromptingProvider.VIEW_PATH, "/pages/inputname.jsp");
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_VIEW_ACTIONS, "", p);
assertEquals(1, list.size());
}
public void testGetPath() {
List<Object> list = provider.getList(model, IWebPromptingProvider.JSF_GET_PATH, "/a.jsf", new Properties());
/*
* After fixing https://jira.jboss.org/jira/browse/JBIDE-5577
* there are two files in the list: .jsp and .xhtml.
*/
assertEquals(3, list.size());
String s = (String)list.get(0);
assertEquals("/a.jsp", s);
s = (String)list.get(1);
assertEquals("/a.xhtml", s);
s = (String)list.get(2);
assertEquals("/a.jspx", s);
}
public void testGetTaglibs() {
WebProject p = WebProject.getInstance(model);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {}
p.getTaglibMapping().invalidate();
Map<String,XModelObject> map = p.getTaglibMapping().getTaglibObjects();
XModelObject o1 = map.get("facelet_taglib");
assertNotNull(o1);
XModelObject o2 = map.get("facelet_taglib2");
assertNotNull(o2);
XModelObject o22 = map.get("facelet_taglib22");
assertNotNull(o22);
}
public void testOpenBean() {
List<Object> list = provider.getBeans(model);
for (Object object : list) {
provider.getList(model, WebPromptingProvider.JSF_BEAN_OPEN, object.toString(), null);
IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
assertNotNull(editor);
assertTrue(editor.getClass().getName().endsWith("CompilationUnitEditor"));
// TODO check that right java class opened
}
}
@Override
protected void tearDown() throws Exception {
}
}