package de.codecentric.mule;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mule.api.MuleContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import de.codecentric.mule.configuration.MuleContextInitializer;
/**
* Test for the Mule Lifecycle
*
* @author Dennis Schulte
*/
public class MuleContextInitializerTest {
private AnnotationConfigApplicationContext context;
private MuleContextInitializer initializer;
@Before
public void setup() {
context = new AnnotationConfigApplicationContext();
context.register(TestApplication.class);
context.refresh();
initializer = new MuleContextInitializer();
initializer.setConfig("mule-noop-config.xml");
}
@After
public void tearDown() {
if (context != null) {
context.close();
}
if (initializer != null && initializer.getMuleContext() != null) {
initializer.getMuleContext().dispose();
}
}
@Test
public void testParentContext() {
initializer.onApplicationEvent(new ContextRefreshedEvent(context));
assertEquals("test", initializer.getMuleContext().getRegistry().get("testBean"));
}
@Test
public void testLifecycle() {
initializer.onApplicationEvent(new ContextRefreshedEvent(context));
assertNotNull(initializer.getMuleContext());
MuleContext muleContext = initializer.getMuleContext();
assertTrue(muleContext.isStarted());
initializer.onApplicationEvent(new ContextClosedEvent(context));
assertNull(initializer.getMuleContext());
assertTrue(muleContext.isDisposed());
}
@Configuration
public static class TestApplication {
@Bean
public String testBean() {
return "test";
}
}
}