/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.core.web;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
public class ModuleInitializerTest extends TestCase {
public void testReceiveCustomEvent() {
ModuleContextRegistrar registrar;
registrar = EasyMock.createMock(ModuleContextRegistrar.class);
EasyMock.replay(registrar);
ApplicationContext parent = EasyMock.createMock(ApplicationContext.class);
ModuleInitializer initializer = new ModuleInitializer(registrar);
initializer.setApplicationContext(parent);
initializer.onApplicationEvent(new ApplicationEvent(new Object()){
private static final long serialVersionUID = -4647062656144905267L;});
EasyMock.verify(registrar);
}
public void testChildContextRefreshed() {
ApplicationContext parent = EasyMock.createMock(ApplicationContext.class);
EasyMock.replay(parent);
ApplicationContext child = EasyMock.createMock(ApplicationContext.class);
EasyMock.replay(child);
ModuleContextRegistrar registrar;
registrar = EasyMock.createMock(ModuleContextRegistrar.class);
EasyMock.replay(registrar);
ModuleInitializer initializer = new ModuleInitializer(registrar);
initializer.setApplicationContext(parent);
initializer.onApplicationEvent(new ContextRefreshedEvent(child));
EasyMock.verify(registrar);
EasyMock.verify(child);
EasyMock.verify(parent);
}
public void doTestSessionFactory(LocalSessionFactoryBean factoryBean) {
ModuleContext context = EasyMock.createMock(ModuleContext.class);
EasyMock.replay(context);
Module userModule = EasyMock.createMock(Module.class);
userModule.init(context);
EasyMock.replay(userModule);
Module timeModule = EasyMock.createMock(Module.class);
timeModule.init(context);
EasyMock.replay(timeModule);
String[] beanNames = {"user.module", "time.module"};
ApplicationContext parent = EasyMock.createMock(ApplicationContext.class);
EasyMock.expect(parent.getBean("user.module")).andReturn(userModule);
EasyMock.expect(parent.getBean("time.module")).andReturn(timeModule);
EasyMock.expect(parent.containsBean("katari.sessionFactory"))
.andReturn(true);
EasyMock.expect(parent.getBean("&katari.sessionFactory")).andReturn(
factoryBean);
EasyMock.replay(parent);
ModuleContextRegistrar registrar;
registrar = EasyMock.createMock(ModuleContextRegistrar.class);
List<String> beans = Arrays.asList(beanNames);
EasyMock.expect(registrar.getModuleBeanNames()).andReturn(
new HashSet<String>(beans));
EasyMock.expect(registrar.getNewModuleContext("user")).andReturn(context);
EasyMock.expect(registrar.getNewModuleContext("time")).andReturn(context);
EasyMock.replay(registrar);
ModuleInitializer initializer = new ModuleInitializer(registrar);
initializer.setApplicationContext(parent);
initializer.onApplicationEvent(new ContextRefreshedEvent(parent));
EasyMock.verify(registrar);
EasyMock.verify(parent);
EasyMock.verify(userModule);
EasyMock.verify(timeModule);
}
}