blob: f403e512695cd315c269d9a7df7f6b3fdd2048fb [file] [log] [blame]
package org.wordpress.android.mocks;
import android.content.Context;
import com.android.volley.RequestQueue;
import com.wordpress.rest.RestClient;
import com.wordpress.rest.RestClient.REST_CLIENT_VERSIONS;
import org.wordpress.android.networking.RestClientFactoryAbstract;
import org.wordpress.android.util.AppLog;
import org.wordpress.android.util.AppLog.T;
import java.util.HashSet;
import java.util.Set;
public class RestClientFactoryTest implements RestClientFactoryAbstract {
public static String sPrefix = "default";
public static RestClient.REST_CLIENT_VERSIONS sVersion = REST_CLIENT_VERSIONS.V1;
public static Context sContext;
// keep a reference to each instances so we can update contexts and prefixes after instantiation
public static Set<RestClientCustomizableMock> sInstances = new HashSet<RestClientCustomizableMock>();
public static void setContextAllInstances(Context context) {
sContext = context;
if (sMode != Mode.CUSTOMIZABLE) {
AppLog.e(T.TESTS, "You try to change context on a non-customizable RestClient mock");
}
for (RestClientCustomizableMock client : sInstances) {
client.setContext(context);
}
}
public static void setPrefixAllInstances(String prefix) {
sPrefix = prefix;
if (sMode != Mode.CUSTOMIZABLE) {
AppLog.e(T.TESTS, "You try to change prefix on a non-customizable RestClient mock");
}
for (RestClientCustomizableMock client : sInstances) {
client.setPrefix(prefix);
}
}
public static Mode sMode = Mode.EMPTY;
public RestClient make(RequestQueue queue) {
switch (sMode) {
case CUSTOMIZABLE:
RestClientCustomizableMock client = new RestClientCustomizableMock(queue);
if (sContext != null) {
client.setContextAndPrefix(sContext, sPrefix);
} else {
AppLog.e(T.TESTS, "You have to set RestClientFactoryTest.sContext field before running tests");
throw new IllegalStateException();
}
AppLog.v(T.TESTS, "make: RestClientCustomizableMock");
sInstances.add(client);
return client;
case EMPTY:
default:
AppLog.v(T.TESTS, "make: RestClientEmptyMock");
return new RestClientEmptyMock(queue);
}
}
public RestClient make(RequestQueue queue, RestClient.REST_CLIENT_VERSIONS version) {
sVersion = version;
return make(queue);
}
public enum Mode {EMPTY, CUSTOMIZABLE}
}