//$Id: InitializationTest.java 9122 2008-09-23 15:47:57Z dan.j.allen $
package org.jboss.seam.test.unit;
import org.jboss.seam.Component;
import org.jboss.seam.Seam;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.contexts.ServletLifecycle;
import org.jboss.seam.core.Manager;
import org.jboss.seam.init.Initialization;
import org.jboss.seam.mock.MockServletContext;
import org.jboss.seam.test.unit.component.ConfigurableComponent;
import org.jboss.seam.test.unit.component.MyEntityHome;
import org.jboss.seam.test.unit.component.PrimaryColor;
import org.jboss.seam.transaction.NoTransaction;
import org.jboss.seam.transaction.Transaction;
import org.testng.Assert;
import org.testng.annotations.Test;
public class InitializationTest
{
@Test
public void testInitialization()
{
MockServletContext servletContext = new MockServletContext();
ServletLifecycle.beginApplication(servletContext);
new Initialization(servletContext).create().init();
assert !servletContext.getAttributes().isEmpty();
assert servletContext.getAttributes().containsKey( Seam.getComponentName(Manager.class) + ".component" );
assert servletContext.getAttributes().containsKey( Seam.getComponentName(Foo.class) + ".component" );
assert !Contexts.isApplicationContextActive();
ServletLifecycle.endApplication();
}
/**
* Configuration for ConfigurableComponent is defined in ConfigurableComponent.component.xml
*/
@Test
public void testEnumPropertyAssignment()
{
MockServletContext servletContext = new MockServletContext();
ServletLifecycle.beginApplication(servletContext);
new Initialization( servletContext ).create().init();
Lifecycle.beginCall();
ConfigurableComponent component = (ConfigurableComponent) Component.getInstance(ConfigurableComponent.class);
assert component != null;
assert component.getPrimaryColor().equals(PrimaryColor.RED);
ServletLifecycle.endApplication();
}
@Test
public void testEntityHomeConfiguration()
{
MockServletContext servletContext = new MockServletContext();
ServletLifecycle.beginApplication(servletContext);
new Initialization( servletContext ).create().init();
Lifecycle.beginCall();
Contexts.getEventContext().set(Seam.getComponentName(Transaction.class), new NoTransaction());
MyEntityHome myEntityHome = (MyEntityHome) Component.getInstance("myEntityHome");
assert myEntityHome != null;
// verify that the reference to new-instance remains unparsed
Assert.assertEquals(myEntityHome.getNewInstance().getExpressionString(), "#{simpleEntity}");
// verify that the message string for the created/updated/deleted message remains unparsed
Assert.assertEquals(myEntityHome.getCreatedMessage().getExpressionString(), "You #{'created'} it! Yeah!");
// verify that the id is parsed prior to assignment
Assert.assertEquals(String.valueOf(myEntityHome.getId()), "11");
ServletLifecycle.endApplication();
}
//TODO: write a test for components.xml
}