package eu.dnetlib.iis.wf.importer.facade;
import static eu.dnetlib.iis.wf.importer.ImportWorkflowRuntimeParameters.IMPORT_FACADE_FACTORY_CLASS;
import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.junit.Test;
import com.google.common.collect.Maps;
/**
* @author mhorst
*
*/
public class ServiceFacadeUtilsTest {
// ------------------------ TESTS --------------------------
@Test(expected = ServiceFacadeException.class)
public void instantiate_no_factory_classname() throws Exception {
// given
Map<String, String> parameters = Maps.newHashMap();
// execute
ServiceFacadeUtils.instantiate(parameters);
}
@Test(expected = ServiceFacadeException.class)
public void instantiate_invalid_factory_classname() throws Exception {
// given
Map<String, String> parameters = Maps.newHashMap();
parameters.put(IMPORT_FACADE_FACTORY_CLASS, "non.existing.Factory");
// execute
ServiceFacadeUtils.instantiate(parameters);
}
@Test(expected = ServiceFacadeException.class)
public void instantiate_invalid_factory() throws Exception {
// given
Map<String, String> parameters = Maps.newHashMap();
parameters.put(IMPORT_FACADE_FACTORY_CLASS, "java.util.Map");
// execute
ServiceFacadeUtils.instantiate(parameters);
}
@Test(expected = ServiceFacadeException.class)
public void instantiate_factory_without_noarg_constructor() throws Exception {
// given
Map<String, String> parameters = Maps.newHashMap();
parameters.put(IMPORT_FACADE_FACTORY_CLASS, "eu.dnetlib.iis.wf.importer.facade.ServiceFacadeUtilsTest$FactoryWithoutNoArgConstructor");
// execute
ServiceFacadeUtils.instantiate(parameters);
}
@Test
public void instantiate() throws Exception {
// given
Map<String, String> parameters = Maps.newHashMap();
parameters.put(IMPORT_FACADE_FACTORY_CLASS, "eu.dnetlib.iis.wf.importer.facade.ServiceFacadeUtilsTest$StringFactory");
// execute
String instantiated = ServiceFacadeUtils.instantiate(parameters);
// assert
assertEquals(instantiated, StringFactory.class.getName());
}
// ------------------------ INNER CLASSES --------------------------
@SuppressWarnings("unused")
private static class FactoryWithoutNoArgConstructor implements ServiceFacadeFactory<String> {
public FactoryWithoutNoArgConstructor(String param) {
// does nothing
}
@Override
public String instantiate(Map<String, String> parameters) {
return this.getClass().getName();
}
}
private static class StringFactory implements ServiceFacadeFactory<String> {
@SuppressWarnings("unused")
public StringFactory() {
//does nothing
}
@Override
public String instantiate(Map<String, String> parameters) {
return this.getClass().getName();
}
}
}