blob: 57dadc9371ac243f9a070b14a538fd4cade07e29 [file] [log] [blame]
package org.wordpress.android;
import org.wordpress.android.mocks.OAuthAuthenticatorFactoryTest;
import org.wordpress.android.mocks.RestClientFactoryTest;
import org.wordpress.android.mocks.SystemServiceFactoryTest;
import org.wordpress.android.mocks.XMLRPCFactoryTest;
import org.wordpress.android.networking.OAuthAuthenticatorFactory;
import org.wordpress.android.networking.RestClientFactory;
import org.wordpress.android.util.AppLog;
import org.wordpress.android.util.AppLog.T;
import org.wordpress.android.util.SystemServiceFactory;
import org.xmlrpc.android.XMLRPCFactory;
import java.lang.reflect.Field;
public class FactoryUtils {
public static void clearFactories() {
// clear factories
forceFactoryInjection(XMLRPCFactory.class, null);
forceFactoryInjection(RestClientFactory.class, null);
forceFactoryInjection(OAuthAuthenticatorFactory.class, null);
forceFactoryInjection(SystemServiceFactory.class, null);
AppLog.v(T.TESTS, "Null factories set");
}
public static void initWithTestFactories() {
// create test factories
forceFactoryInjection(XMLRPCFactory.class, new XMLRPCFactoryTest());
forceFactoryInjection(RestClientFactory.class, new RestClientFactoryTest());
forceFactoryInjection(OAuthAuthenticatorFactory.class, new OAuthAuthenticatorFactoryTest());
forceFactoryInjection(SystemServiceFactory.class, new SystemServiceFactoryTest());
AppLog.v(T.TESTS, "Mocks factories instantiated");
}
private static void forceFactoryInjection(Class klass, Object factory) {
try {
Field field = klass.getDeclaredField("sFactory");
field.setAccessible(true);
field.set(null, factory);
AppLog.v(T.TESTS, "Factory " + klass + " injected");
} catch (Exception e) {
AppLog.e(T.TESTS, "Can't inject test factory " + klass);
}
}
}