package com.google.api.ads.adwords.lib.utils.testing;
import com.google.api.ads.adwords.lib.AdWordsModule;
import com.google.api.ads.adwords.lib.AdWordsPluginModule;
import com.google.api.ads.adwords.lib.factory.AdWordsServicesInterface;
import com.google.api.ads.adwords.lib.factory.BaseAdWordsServices;
import com.google.api.ads.adwords.lib.factory.DependencyBootstrapper;
import com.google.api.ads.common.lib.factory.helper.AdsServiceClientFactoryHelper;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import org.mockito.Mockito;
/**
* Subclass of {@link com.google.api.ads.adwords.lib.factory.BaseAdWordsServices} that does not
* depend on a particular SOAP framework. Useful for tests of non-SOAP utilities.
*/
public class GenericAdWordsServices extends BaseAdWordsServices {
/** Constructs an instance without an {@link AdWordsPluginModule}. */
public GenericAdWordsServices() {
super(Guice.createInjector(new GenericAdWordsModule()));
}
/** Constructs an instance with an {@link AdWordsPluginModule}. */
private GenericAdWordsServices(AdWordsPluginModule pluginModule) {
super(Guice.createInjector(new GenericAdWordsModule(), pluginModule));
}
@Override
public AdWordsServicesInterface withPluginModule(AdWordsPluginModule pluginModule) {
return new GenericAdWordsServices(pluginModule);
}
public DependencyBootstrapper getBootstrapper() {
return createBootstrapper();
}
private static class GenericAdWordsModule extends AbstractModule {
@Override
protected void configure() {
// Create a mock factory helper. This is required for setting up the injector, but isn't
// actually used when obtaining non-SOAP utilities.
@SuppressWarnings("rawtypes")
final AdsServiceClientFactoryHelper mockFactoryHelper =
Mockito.mock(AdsServiceClientFactoryHelper.class);
bind(AdsServiceClientFactoryHelper.class).toInstance(mockFactoryHelper);
install(new AdWordsModule());
}
}
}