package core.framework.api;
import core.framework.impl.module.ModuleContext;
import core.framework.test.inject.TestBeanFactory;
import core.framework.test.module.InitDBConfig;
import core.framework.test.module.InitSearchConfig;
import core.framework.test.module.MockFactoryImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Type;
/**
* @author neo
*/
public abstract class AbstractTestModule extends Module {
private final Logger logger = LoggerFactory.getLogger(AbstractTestModule.class);
public final void configure() {
logger.info("initialize test context");
context = new ModuleContext(new TestBeanFactory(), new MockFactoryImpl());
logger.info("initialize application");
initialize();
context.config.validate();
}
public <T> T overrideBinding(Class<? super T> type, T instance) {
return overrideBinding(type, null, instance);
}
public <T> T overrideBinding(Type type, String name, T instance) {
return ((TestBeanFactory) context.beanFactory).overrideBinding(type, name, instance);
}
public <T> T create(Class<T> instanceClass) {
return context.beanFactory.create(instanceClass);
}
public InitDBConfig initDB() {
return initDB(null);
}
public InitDBConfig initDB(String name) {
return new InitDBConfig(context, name);
}
public InitSearchConfig initSearch() {
return new InitSearchConfig(context);
}
}