mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Remove the data-client app adapter implementation (#5499)
* logErrorsInsteadOfCrashing only ever returned false, so remove it and simplify logger * Removed unused getMediaWikiBaseUrl() * Removed getDesiredLeadImageDp() from commons app adapter, since it's unused * Inlined the isLoggedIn() method of the app adapter * Inline the app adapter username/password * Removed the unused getRestbaseUriFormat() from the commons app adapter * Remove references to the data-client SharedPreferenceCookieManager * Manage our own OkHttpClient and remove the AppAdapter implementation
This commit is contained in:
parent
ab9e57f5be
commit
8db0b54929
57 changed files with 422 additions and 518 deletions
|
|
@ -1,77 +0,0 @@
|
||||||
package fr.free.nrw.commons;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import fr.free.nrw.commons.auth.SessionManager;
|
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
import org.wikipedia.AppAdapter;
|
|
||||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
|
|
||||||
import org.wikipedia.json.GsonMarshaller;
|
|
||||||
import org.wikipedia.json.GsonUnmarshaller;
|
|
||||||
|
|
||||||
public class CommonsAppAdapter extends AppAdapter {
|
|
||||||
private final int DEFAULT_THUMB_SIZE = 640;
|
|
||||||
private final String COOKIE_STORE_NAME = "cookie_store";
|
|
||||||
|
|
||||||
private final SessionManager sessionManager;
|
|
||||||
private final JsonKvStore preferences;
|
|
||||||
|
|
||||||
CommonsAppAdapter(@NonNull SessionManager sessionManager, @NonNull JsonKvStore preferences) {
|
|
||||||
this.sessionManager = sessionManager;
|
|
||||||
this.preferences = preferences;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMediaWikiBaseUrl() {
|
|
||||||
return BuildConfig.COMMONS_URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRestbaseUriFormat() {
|
|
||||||
return BuildConfig.COMMONS_URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public OkHttpClient getOkHttpClient() {
|
|
||||||
return OkHttpConnectionFactory.getClient();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDesiredLeadImageDp() {
|
|
||||||
return DEFAULT_THUMB_SIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isLoggedIn() {
|
|
||||||
return sessionManager.isUserLoggedIn();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUserName() {
|
|
||||||
return sessionManager.getUserName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPassword() {
|
|
||||||
return sessionManager.getPassword();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SharedPreferenceCookieManager getCookies() {
|
|
||||||
if (!preferences.contains(COOKIE_STORE_NAME)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return GsonUnmarshaller.unmarshal(SharedPreferenceCookieManager.class,
|
|
||||||
preferences.getString(COOKIE_STORE_NAME, null));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCookies(@NonNull SharedPreferenceCookieManager cookies) {
|
|
||||||
preferences.putString(COOKIE_STORE_NAME, GsonMarshaller.marshal(cookies));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean logErrorsInsteadOfCrashing() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -41,6 +41,7 @@ import fr.free.nrw.commons.media.CustomOkHttpNetworkFetcher;
|
||||||
import fr.free.nrw.commons.settings.Prefs;
|
import fr.free.nrw.commons.settings.Prefs;
|
||||||
import fr.free.nrw.commons.upload.FileUtils;
|
import fr.free.nrw.commons.upload.FileUtils;
|
||||||
import fr.free.nrw.commons.utils.ConfigUtils;
|
import fr.free.nrw.commons.utils.ConfigUtils;
|
||||||
|
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieJar;
|
||||||
import io.reactivex.Completable;
|
import io.reactivex.Completable;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.internal.functions.Functions;
|
import io.reactivex.internal.functions.Functions;
|
||||||
|
|
@ -58,7 +59,6 @@ import org.acra.annotation.AcraCore;
|
||||||
import org.acra.annotation.AcraDialog;
|
import org.acra.annotation.AcraDialog;
|
||||||
import org.acra.annotation.AcraMailSender;
|
import org.acra.annotation.AcraMailSender;
|
||||||
import org.acra.data.StringFormat;
|
import org.acra.data.StringFormat;
|
||||||
import org.wikipedia.AppAdapter;
|
|
||||||
import org.wikipedia.language.AppLanguageLookUpTable;
|
import org.wikipedia.language.AppLanguageLookUpTable;
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
|
|
@ -94,6 +94,9 @@ public class CommonsApplication extends MultiDexApplication {
|
||||||
@Named("default_preferences")
|
@Named("default_preferences")
|
||||||
JsonKvStore defaultPrefs;
|
JsonKvStore defaultPrefs;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
CommonsCookieJar cookieJar;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
CustomOkHttpNetworkFetcher customOkHttpNetworkFetcher;
|
CustomOkHttpNetworkFetcher customOkHttpNetworkFetcher;
|
||||||
|
|
||||||
|
|
@ -161,8 +164,6 @@ public class CommonsApplication extends MultiDexApplication {
|
||||||
.getCommonsApplicationComponent()
|
.getCommonsApplicationComponent()
|
||||||
.inject(this);
|
.inject(this);
|
||||||
|
|
||||||
AppAdapter.set(new CommonsAppAdapter(sessionManager, defaultPrefs));
|
|
||||||
|
|
||||||
initTimber();
|
initTimber();
|
||||||
|
|
||||||
if (!defaultPrefs.getBoolean("has_user_manually_removed_location")) {
|
if (!defaultPrefs.getBoolean("has_user_manually_removed_location")) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package fr.free.nrw.commons;
|
package fr.free.nrw.commons;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieJar;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
@ -15,28 +15,27 @@ import okhttp3.Response;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
import okhttp3.logging.HttpLoggingInterceptor;
|
import okhttp3.logging.HttpLoggingInterceptor;
|
||||||
import okhttp3.logging.HttpLoggingInterceptor.Level;
|
import okhttp3.logging.HttpLoggingInterceptor.Level;
|
||||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
|
|
||||||
import org.wikipedia.dataclient.okhttp.HttpStatusException;
|
import org.wikipedia.dataclient.okhttp.HttpStatusException;
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
public final class OkHttpConnectionFactory {
|
public final class OkHttpConnectionFactory {
|
||||||
private static final String CACHE_DIR_NAME = "okhttp-cache";
|
private static final String CACHE_DIR_NAME = "okhttp-cache";
|
||||||
private static final long NET_CACHE_SIZE = 64 * 1024 * 1024;
|
private static final long NET_CACHE_SIZE = 64 * 1024 * 1024;
|
||||||
@NonNull private static final Cache NET_CACHE = new Cache(new File(CommonsApplication.getInstance().getCacheDir(),
|
|
||||||
CACHE_DIR_NAME), NET_CACHE_SIZE);
|
|
||||||
|
|
||||||
@NonNull
|
public static OkHttpClient CLIENT;
|
||||||
private static final OkHttpClient CLIENT = createClient();
|
|
||||||
|
|
||||||
@NonNull public static OkHttpClient getClient() {
|
@NonNull public static OkHttpClient getClient(final CommonsCookieJar cookieJar) {
|
||||||
|
if (CLIENT == null) {
|
||||||
|
CLIENT = createClient(cookieJar);
|
||||||
|
}
|
||||||
return CLIENT;
|
return CLIENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private static OkHttpClient createClient() {
|
private static OkHttpClient createClient(final CommonsCookieJar cookieJar) {
|
||||||
return new OkHttpClient.Builder()
|
return new OkHttpClient.Builder()
|
||||||
.cookieJar(SharedPreferenceCookieManager.getInstance())
|
.cookieJar(cookieJar)
|
||||||
.cache(NET_CACHE)
|
.cache(new Cache(new File(CommonsApplication.getInstance().getCacheDir(), CACHE_DIR_NAME), NET_CACHE_SIZE))
|
||||||
.connectTimeout(120, TimeUnit.SECONDS)
|
.connectTimeout(120, TimeUnit.SECONDS)
|
||||||
.writeTimeout(120, TimeUnit.SECONDS)
|
.writeTimeout(120, TimeUnit.SECONDS)
|
||||||
.readTimeout(120, TimeUnit.SECONDS)
|
.readTimeout(120, TimeUnit.SECONDS)
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@ package fr.free.nrw.commons.auth.csrf
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
import fr.free.nrw.commons.auth.SessionManager
|
import fr.free.nrw.commons.auth.SessionManager
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager
|
|
||||||
import org.wikipedia.dataclient.mwapi.MwQueryResponse
|
import org.wikipedia.dataclient.mwapi.MwQueryResponse
|
||||||
import fr.free.nrw.commons.auth.login.LoginClient
|
import fr.free.nrw.commons.auth.login.LoginClient
|
||||||
import fr.free.nrw.commons.auth.login.LoginCallback
|
import fr.free.nrw.commons.auth.login.LoginCallback
|
||||||
|
|
@ -19,7 +17,8 @@ import java.util.concurrent.Executors.newSingleThreadExecutor
|
||||||
class CsrfTokenClient(
|
class CsrfTokenClient(
|
||||||
private val sessionManager: SessionManager,
|
private val sessionManager: SessionManager,
|
||||||
private val csrfTokenInterface: CsrfTokenInterface,
|
private val csrfTokenInterface: CsrfTokenInterface,
|
||||||
private val loginClient: LoginClient
|
private val loginClient: LoginClient,
|
||||||
|
private val logoutClient: LogoutClient
|
||||||
) {
|
) {
|
||||||
private var retries = 0
|
private var retries = 0
|
||||||
private var csrfTokenCall: Call<MwQueryResponse?>? = null
|
private var csrfTokenCall: Call<MwQueryResponse?>? = null
|
||||||
|
|
@ -27,8 +26,8 @@ class CsrfTokenClient(
|
||||||
@Throws(Throwable::class)
|
@Throws(Throwable::class)
|
||||||
fun getTokenBlocking(): String {
|
fun getTokenBlocking(): String {
|
||||||
var token = ""
|
var token = ""
|
||||||
val userName = AppAdapter.get().getUserName()
|
val userName = sessionManager.userName ?: ""
|
||||||
val password = AppAdapter.get().getPassword()
|
val password = sessionManager.password ?: ""
|
||||||
|
|
||||||
for (retry in 0 until MAX_RETRIES_OF_LOGIN_BLOCKING) {
|
for (retry in 0 until MAX_RETRIES_OF_LOGIN_BLOCKING) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -47,7 +46,7 @@ class CsrfTokenClient(
|
||||||
}
|
}
|
||||||
|
|
||||||
token = response.body()!!.query()!!.csrfToken()!!
|
token = response.body()!!.query()!!.csrfToken()!!
|
||||||
if (AppAdapter.get().isLoggedIn() && token == ANON_TOKEN) {
|
if (sessionManager.isUserLoggedIn && token == ANON_TOKEN) {
|
||||||
throw RuntimeException("App believes we're logged in, but got anonymous token.")
|
throw RuntimeException("App believes we're logged in, but got anonymous token.")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
@ -66,7 +65,7 @@ class CsrfTokenClient(
|
||||||
fun request(service: CsrfTokenInterface, cb: Callback): Call<MwQueryResponse?> =
|
fun request(service: CsrfTokenInterface, cb: Callback): Call<MwQueryResponse?> =
|
||||||
requestToken(service, object : Callback {
|
requestToken(service, object : Callback {
|
||||||
override fun success(token: String?) {
|
override fun success(token: String?) {
|
||||||
if (AppAdapter.get().isLoggedIn() && token == ANON_TOKEN) {
|
if (sessionManager.isUserLoggedIn && token == ANON_TOKEN) {
|
||||||
retryWithLogin(cb) {
|
retryWithLogin(cb) {
|
||||||
RuntimeException("App believes we're logged in, but got anonymous token.")
|
RuntimeException("App believes we're logged in, but got anonymous token.")
|
||||||
}
|
}
|
||||||
|
|
@ -102,11 +101,11 @@ class CsrfTokenClient(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun retryWithLogin(callback: Callback, caught: () -> Throwable?) {
|
private fun retryWithLogin(callback: Callback, caught: () -> Throwable?) {
|
||||||
val userName = AppAdapter.get().getUserName()
|
val userName = sessionManager.userName
|
||||||
val password = AppAdapter.get().getPassword()
|
val password = sessionManager.password
|
||||||
if (retries < MAX_RETRIES && !userName.isNullOrEmpty() && !password.isNullOrEmpty()) {
|
if (retries < MAX_RETRIES && !userName.isNullOrEmpty() && !password.isNullOrEmpty()) {
|
||||||
retries++
|
retries++
|
||||||
SharedPreferenceCookieManager.getInstance().clearAllCookies()
|
logoutClient.logout()
|
||||||
login(userName, password, callback) {
|
login(userName, password, callback) {
|
||||||
Timber.i("retrying...")
|
Timber.i("retrying...")
|
||||||
cancel()
|
cancel()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
package fr.free.nrw.commons.auth.csrf
|
||||||
|
|
||||||
|
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieStorage
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class LogoutClient @Inject constructor(private val store: CommonsCookieStorage) {
|
||||||
|
fun logout() = store.clear()
|
||||||
|
}
|
||||||
|
|
@ -257,8 +257,8 @@ public class CommonsApplicationModule {
|
||||||
|
|
||||||
@Named("username")
|
@Named("username")
|
||||||
@Provides
|
@Provides
|
||||||
public String provideLoggedInUsername() {
|
public String provideLoggedInUsername(SessionManager sessionManager) {
|
||||||
return Objects.toString(AppAdapter.get().getUserName(), "");
|
return Objects.toString(sessionManager.getUserName(), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,10 @@ import fr.free.nrw.commons.actions.PageEditClient;
|
||||||
import fr.free.nrw.commons.actions.PageEditInterface;
|
import fr.free.nrw.commons.actions.PageEditInterface;
|
||||||
import fr.free.nrw.commons.actions.ThanksInterface;
|
import fr.free.nrw.commons.actions.ThanksInterface;
|
||||||
import fr.free.nrw.commons.auth.SessionManager;
|
import fr.free.nrw.commons.auth.SessionManager;
|
||||||
|
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient;
|
||||||
import fr.free.nrw.commons.auth.csrf.CsrfTokenInterface;
|
import fr.free.nrw.commons.auth.csrf.CsrfTokenInterface;
|
||||||
|
import fr.free.nrw.commons.auth.csrf.LogoutClient;
|
||||||
|
import fr.free.nrw.commons.auth.login.LoginClient;
|
||||||
import fr.free.nrw.commons.auth.login.LoginInterface;
|
import fr.free.nrw.commons.auth.login.LoginInterface;
|
||||||
import fr.free.nrw.commons.category.CategoryInterface;
|
import fr.free.nrw.commons.category.CategoryInterface;
|
||||||
import fr.free.nrw.commons.explore.depictions.DepictsClient;
|
import fr.free.nrw.commons.explore.depictions.DepictsClient;
|
||||||
|
|
@ -30,6 +33,8 @@ import fr.free.nrw.commons.upload.WikiBaseInterface;
|
||||||
import fr.free.nrw.commons.upload.depicts.DepictsInterface;
|
import fr.free.nrw.commons.upload.depicts.DepictsInterface;
|
||||||
import fr.free.nrw.commons.wikidata.CommonsServiceFactory;
|
import fr.free.nrw.commons.wikidata.CommonsServiceFactory;
|
||||||
import fr.free.nrw.commons.wikidata.WikidataInterface;
|
import fr.free.nrw.commons.wikidata.WikidataInterface;
|
||||||
|
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieJar;
|
||||||
|
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieStorage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
@ -40,11 +45,8 @@ import okhttp3.HttpUrl;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.logging.HttpLoggingInterceptor;
|
import okhttp3.logging.HttpLoggingInterceptor;
|
||||||
import okhttp3.logging.HttpLoggingInterceptor.Level;
|
import okhttp3.logging.HttpLoggingInterceptor.Level;
|
||||||
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient;
|
|
||||||
import org.wikipedia.AppAdapter;
|
|
||||||
import org.wikipedia.dataclient.WikiSite;
|
import org.wikipedia.dataclient.WikiSite;
|
||||||
import org.wikipedia.json.GsonUtil;
|
import org.wikipedia.json.GsonUtil;
|
||||||
import fr.free.nrw.commons.auth.login.LoginClient;
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
|
|
@ -78,8 +80,8 @@ public class NetworkingModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
public CommonsServiceFactory serviceFactory() {
|
public CommonsServiceFactory serviceFactory(CommonsCookieJar cookieJar) {
|
||||||
return new CommonsServiceFactory(AppAdapter.get().getOkHttpClient());
|
return new CommonsServiceFactory(OkHttpConnectionFactory.getClient(cookieJar));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|
@ -107,12 +109,27 @@ public class NetworkingModule {
|
||||||
gson);
|
gson);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
public CommonsCookieStorage provideCookieStorage(
|
||||||
|
@Named("default_preferences") JsonKvStore preferences) {
|
||||||
|
CommonsCookieStorage cookieStorage = new CommonsCookieStorage(preferences);
|
||||||
|
cookieStorage.load();
|
||||||
|
return cookieStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
public CommonsCookieJar provideCookieJar(CommonsCookieStorage storage) {
|
||||||
|
return new CommonsCookieJar(storage);
|
||||||
|
}
|
||||||
|
|
||||||
@Named(NAMED_COMMONS_CSRF)
|
@Named(NAMED_COMMONS_CSRF)
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
public CsrfTokenClient provideCommonsCsrfTokenClient(SessionManager sessionManager,
|
public CsrfTokenClient provideCommonsCsrfTokenClient(SessionManager sessionManager,
|
||||||
CsrfTokenInterface tokenInterface, LoginClient loginClient) {
|
CsrfTokenInterface tokenInterface, LoginClient loginClient, LogoutClient logoutClient) {
|
||||||
return new CsrfTokenClient(sessionManager, tokenInterface, loginClient);
|
return new CsrfTokenClient(sessionManager, tokenInterface, loginClient, logoutClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
package fr.free.nrw.commons.wikidata.cookies
|
||||||
|
|
||||||
|
import okhttp3.Cookie
|
||||||
|
import okhttp3.CookieJar
|
||||||
|
import okhttp3.HttpUrl
|
||||||
|
|
||||||
|
class CommonsCookieJar(private val cookieStorage: CommonsCookieStorage) : CookieJar {
|
||||||
|
override fun loadForRequest(url: HttpUrl): List<Cookie> {
|
||||||
|
val cookieList = mutableListOf<Cookie>()
|
||||||
|
val domain: String = url.toUri().getAuthority()
|
||||||
|
|
||||||
|
cookieStorage.domains.forEach { domainSpec ->
|
||||||
|
if (domain.endsWith(domainSpec, true)) {
|
||||||
|
buildCookieList(cookieList, cookieStorage[domainSpec], null)
|
||||||
|
} else if (domainSpec.endsWith("commons.wikimedia.org")) {
|
||||||
|
// For sites outside the wikipedia.org domain, transfer the centralauth cookies
|
||||||
|
// from commons.wikimedia.org unconditionally.
|
||||||
|
buildCookieList(cookieList, cookieStorage[domainSpec], "centralauth_")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cookieList
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
|
||||||
|
if (cookies.isEmpty()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var cookieJarModified = false
|
||||||
|
cookies.forEach { cookie ->
|
||||||
|
// Default to the URI's domain if cookie's domain is not explicitly set
|
||||||
|
val domainSpec = cookie.domainSpec(url)
|
||||||
|
if (!cookieStorage.contains(domainSpec)) {
|
||||||
|
cookieStorage[domainSpec] = mutableListOf()
|
||||||
|
}
|
||||||
|
|
||||||
|
val cookieList = cookieStorage[domainSpec]
|
||||||
|
if (cookie.expiredOrDeleted()) {
|
||||||
|
cookieJarModified = cookieList.removeAll { it.name == cookie.name }
|
||||||
|
} else {
|
||||||
|
val i = cookieList.iterator()
|
||||||
|
var exists = false
|
||||||
|
while (i.hasNext()) {
|
||||||
|
val c = i.next()
|
||||||
|
if (c == cookie) {
|
||||||
|
// an identical cookie already exists, so we don't need to update it.
|
||||||
|
exists = true
|
||||||
|
break
|
||||||
|
} else if (c.name == cookie.name) {
|
||||||
|
// it's a cookie with the same name, but different contents, so remove the
|
||||||
|
// current cookie, so that the new one will be added.
|
||||||
|
i.remove()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!exists) {
|
||||||
|
cookieList.add(cookie)
|
||||||
|
cookieJarModified = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cookieStorage[domainSpec] = cookieList
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cookieJarModified) {
|
||||||
|
cookieStorage.save()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun buildCookieList(
|
||||||
|
outList: MutableList<Cookie>, inList: MutableList<Cookie>, prefix: String?
|
||||||
|
) {
|
||||||
|
var cookieJarModified = false
|
||||||
|
|
||||||
|
val i = inList.iterator()
|
||||||
|
while (i.hasNext()) {
|
||||||
|
val cookie = i.next()
|
||||||
|
if (prefix != null && !cookie.name.startsWith(prefix)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// But wait, is the cookie expired?
|
||||||
|
if (cookie.expiresAt < System.currentTimeMillis()) {
|
||||||
|
i.remove()
|
||||||
|
cookieJarModified = true
|
||||||
|
} else {
|
||||||
|
outList.add(cookie)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cookieJarModified) {
|
||||||
|
cookieStorage.save()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Cookie.expiredOrDeleted(): Boolean =
|
||||||
|
expiresAt < System.currentTimeMillis() || "deleted" == value
|
||||||
|
|
||||||
|
private fun Cookie.domainSpec(url: HttpUrl): String =
|
||||||
|
domain.ifEmpty { url.toUri().getAuthority() }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
package fr.free.nrw.commons.wikidata.cookies
|
||||||
|
|
||||||
|
import com.google.gson.GsonBuilder
|
||||||
|
import com.google.gson.TypeAdapter
|
||||||
|
import com.google.gson.stream.JsonReader
|
||||||
|
import com.google.gson.stream.JsonWriter
|
||||||
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
|
import okhttp3.Cookie
|
||||||
|
import okhttp3.HttpUrl
|
||||||
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||||
|
import org.wikipedia.dataclient.WikiSite
|
||||||
|
|
||||||
|
private const val COOKIE_STORE = "cookie_store"
|
||||||
|
|
||||||
|
class CommonsCookieStorage(private val preferences: JsonKvStore? = null) {
|
||||||
|
private val gson = GsonBuilder().registerTypeAdapter(
|
||||||
|
CommonsCookieStorage::class.java,
|
||||||
|
CookieStorageTypeAdapter()
|
||||||
|
).create()
|
||||||
|
private val cookieMap: MutableMap<String, List<Cookie>> = mutableMapOf()
|
||||||
|
|
||||||
|
val domains : Set<String> get() = cookieMap.keys.toSet()
|
||||||
|
|
||||||
|
operator fun set(domainSpec: String, cookies: MutableList<Cookie>) =
|
||||||
|
cookieMap.put(domainSpec, cookies.toList())
|
||||||
|
|
||||||
|
operator fun get(domainSpec: String): MutableList<Cookie> =
|
||||||
|
cookieMap[domainSpec]?.toMutableList() ?: mutableListOf()
|
||||||
|
|
||||||
|
fun clear() {
|
||||||
|
cookieMap.clear()
|
||||||
|
save()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun load() {
|
||||||
|
cookieMap.clear()
|
||||||
|
val json = preferences!!.getString(COOKIE_STORE, null)
|
||||||
|
if (!json.isNullOrEmpty()) {
|
||||||
|
val serializedData = gson.fromJson(json, CommonsCookieStorage::class.java)
|
||||||
|
cookieMap.putAll(serializedData.cookieMap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun save() =
|
||||||
|
preferences!!.putString(COOKIE_STORE, gson.toJson(this))
|
||||||
|
|
||||||
|
fun contains(domainSpec: String): Boolean =
|
||||||
|
cookieMap.containsKey(domainSpec)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun from(map: Map<String, List<Cookie>>) = CommonsCookieStorage().apply {
|
||||||
|
cookieMap.clear()
|
||||||
|
cookieMap.putAll(map)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class CookieStorageTypeAdapter : TypeAdapter<CommonsCookieStorage>() {
|
||||||
|
override fun write(out: JsonWriter, value: CommonsCookieStorage) {
|
||||||
|
out.beginObject()
|
||||||
|
value.domains.forEach { domain ->
|
||||||
|
out.name(domain).beginArray()
|
||||||
|
value[domain].forEach { out.value(it.toString()) }
|
||||||
|
out.endArray()
|
||||||
|
}
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun read(input: JsonReader): CommonsCookieStorage {
|
||||||
|
val map = mutableMapOf<String, List<Cookie>>()
|
||||||
|
input.beginObject()
|
||||||
|
while (input.hasNext()) {
|
||||||
|
val key = input.nextName()
|
||||||
|
map[key] = input.readCookies((WikiSite.DEFAULT_SCHEME + "://" + key).toHttpUrlOrNull())
|
||||||
|
}
|
||||||
|
input.endObject()
|
||||||
|
return CommonsCookieStorage.from(map)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun JsonReader.readCookies(url: HttpUrl?): MutableList<Cookie> {
|
||||||
|
val list = mutableListOf<Cookie>()
|
||||||
|
beginArray()
|
||||||
|
while (hasNext()) {
|
||||||
|
val str = nextString()
|
||||||
|
url?.let {
|
||||||
|
val element: Cookie? = Cookie.parse(url, str)
|
||||||
|
element?.let { list += element }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endArray()
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
package fr.free.nrw.commons
|
|
||||||
|
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
|
||||||
import fr.free.nrw.commons.auth.SessionManager
|
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
|
||||||
import org.junit.Assert
|
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.Test
|
|
||||||
import org.mockito.Mock
|
|
||||||
import org.mockito.MockitoAnnotations
|
|
||||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager
|
|
||||||
import org.wikipedia.json.GsonMarshaller
|
|
||||||
import fr.free.nrw.commons.auth.login.LoginResult
|
|
||||||
|
|
||||||
class CommonsAppAdapterUnitTest {
|
|
||||||
|
|
||||||
private lateinit var adapter: CommonsAppAdapter
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private lateinit var sessionManager: SessionManager
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private lateinit var preferences: JsonKvStore
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private lateinit var result: LoginResult
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private lateinit var cookies: SharedPreferenceCookieManager
|
|
||||||
|
|
||||||
@Before
|
|
||||||
fun setUp() {
|
|
||||||
MockitoAnnotations.openMocks(this)
|
|
||||||
adapter = CommonsAppAdapter(sessionManager, preferences)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun checkAdapterNotNull() {
|
|
||||||
Assert.assertNotNull(adapter)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testGetMediaWikiBaseUrl() {
|
|
||||||
Assert.assertEquals(adapter.mediaWikiBaseUrl, BuildConfig.COMMONS_URL)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testGetRestbaseUriFormat() {
|
|
||||||
Assert.assertEquals(adapter.restbaseUriFormat, BuildConfig.COMMONS_URL)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testGetDesiredLeadImageDp() {
|
|
||||||
Assert.assertEquals(adapter.desiredLeadImageDp, 640)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testIsLoggedIn() {
|
|
||||||
whenever(sessionManager.isUserLoggedIn).thenReturn(true)
|
|
||||||
Assert.assertEquals(adapter.isLoggedIn, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testGetUserName() {
|
|
||||||
whenever(sessionManager.userName).thenReturn("test")
|
|
||||||
Assert.assertEquals(adapter.userName, "test")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testGetPassword() {
|
|
||||||
whenever(sessionManager.password).thenReturn("test")
|
|
||||||
Assert.assertEquals(adapter.password, "test")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testSetCookies() {
|
|
||||||
adapter.cookies = cookies
|
|
||||||
verify(preferences).putString("cookie_store", GsonMarshaller.marshal(cookies))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testLogErrorsInsteadOfCrashing() {
|
|
||||||
Assert.assertEquals(adapter.logErrorsInsteadOfCrashing(), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Throws(Exception::class)
|
|
||||||
fun testGetCookiesCaseNull() {
|
|
||||||
whenever(preferences.contains("cookie_store")).thenReturn(false)
|
|
||||||
Assert.assertEquals(adapter.cookies, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package fr.free.nrw.commons;
|
package fr.free.nrw.commons;
|
||||||
|
|
||||||
|
import static fr.free.nrw.commons.TestConnectionFactoryKt.createTestClient;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.AbstractExecutorService;
|
import java.util.concurrent.AbstractExecutorService;
|
||||||
|
|
@ -12,7 +14,6 @@ import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.wikipedia.AppAdapter;
|
|
||||||
import org.wikipedia.json.GsonUtil;
|
import org.wikipedia.json.GsonUtil;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
import retrofit2.converter.gson.GsonConverterFactory;
|
import retrofit2.converter.gson.GsonConverterFactory;
|
||||||
|
|
@ -23,9 +24,9 @@ public abstract class MockWebServerTest {
|
||||||
private final TestWebServer server = new TestWebServer();
|
private final TestWebServer server = new TestWebServer();
|
||||||
|
|
||||||
@Before public void setUp() throws Throwable {
|
@Before public void setUp() throws Throwable {
|
||||||
AppAdapter.set(new TestAppAdapter());
|
OkHttpConnectionFactory.CLIENT = createTestClient();
|
||||||
OkHttpClient.Builder builder = AppAdapter.get().getOkHttpClient().newBuilder();
|
okHttpClient = OkHttpConnectionFactory.CLIENT.newBuilder()
|
||||||
okHttpClient = builder.dispatcher(new Dispatcher(new ImmediateExecutorService())).build();
|
.dispatcher(new Dispatcher(new ImmediateExecutorService())).build();
|
||||||
server.setUp();
|
server.setUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
package fr.free.nrw.commons;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import fr.free.nrw.commons.wikidata.WikidataConstants;
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
import org.wikipedia.AppAdapter;
|
|
||||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
|
|
||||||
import org.wikipedia.dataclient.okhttp.TestStubInterceptor;
|
|
||||||
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor;
|
|
||||||
|
|
||||||
public class TestAppAdapter extends AppAdapter {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMediaWikiBaseUrl() {
|
|
||||||
return WikidataConstants.WIKIPEDIA_URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRestbaseUriFormat() {
|
|
||||||
return "%1$s://%2$s/api/rest_v1/";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public OkHttpClient getOkHttpClient() {
|
|
||||||
return new OkHttpClient.Builder()
|
|
||||||
.addInterceptor(new UnsuccessfulResponseInterceptor())
|
|
||||||
.addInterceptor(new TestStubInterceptor())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDesiredLeadImageDp() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isLoggedIn() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUserName() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPassword() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SharedPreferenceCookieManager getCookies() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCookies(@NonNull SharedPreferenceCookieManager cookies) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean logErrorsInsteadOfCrashing() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package fr.free.nrw.commons
|
||||||
|
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
import org.wikipedia.dataclient.okhttp.TestStubInterceptor
|
||||||
|
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor
|
||||||
|
|
||||||
|
fun createTestClient(): OkHttpClient = OkHttpClient.Builder()
|
||||||
|
.addInterceptor(UnsuccessfulResponseInterceptor())
|
||||||
|
.addInterceptor(TestStubInterceptor())
|
||||||
|
.build()
|
||||||
|
|
@ -10,9 +10,10 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.auth.login.LoginResult
|
import fr.free.nrw.commons.auth.login.LoginResult
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
|
@ -27,7 +28,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -74,7 +74,7 @@ class LoginActivityUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
menuItem = RoboMenuItem(null)
|
menuItem = RoboMenuItem(null)
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,8 @@ class CsrfTokenClientTest : MockWebServerTest() {
|
||||||
private val sessionManager = mock(SessionManager::class.java)
|
private val sessionManager = mock(SessionManager::class.java)
|
||||||
private val tokenInterface = mock(CsrfTokenInterface::class.java)
|
private val tokenInterface = mock(CsrfTokenInterface::class.java)
|
||||||
private val loginClient = mock(LoginClient::class.java)
|
private val loginClient = mock(LoginClient::class.java)
|
||||||
private val subject = CsrfTokenClient(sessionManager, tokenInterface, loginClient)
|
private val logoutClient = mock(LogoutClient::class.java)
|
||||||
|
private val subject = CsrfTokenClient(sessionManager, tokenInterface, loginClient, logoutClient)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Throws(Throwable::class)
|
@Throws(Throwable::class)
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,10 @@ import com.nhaarman.mockitokotlin2.times
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment
|
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import fr.free.nrw.commons.explore.ParentViewPager
|
import fr.free.nrw.commons.explore.ParentViewPager
|
||||||
|
|
@ -35,7 +36,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -84,7 +84,7 @@ class BookmarkListRootFragmentUnitTest {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,10 @@ import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.category.CategoryItem
|
import fr.free.nrw.commons.category.CategoryItem
|
||||||
import fr.free.nrw.commons.profile.ProfileActivity
|
import fr.free.nrw.commons.profile.ProfileActivity
|
||||||
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
|
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
|
||||||
|
|
@ -28,7 +29,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@ class BookmarkItemsFragmentUnitTest {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||||
fragment = BookmarkItemsFragment.newInstance()
|
fragment = BookmarkItemsFragment.newInstance()
|
||||||
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,10 @@ import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.contributions.ContributionController
|
import fr.free.nrw.commons.contributions.ContributionController
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import fr.free.nrw.commons.nearby.Place
|
import fr.free.nrw.commons.nearby.Place
|
||||||
|
|
@ -32,7 +33,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -98,7 +98,7 @@ class BookmarkLocationFragmentUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||||
fragment = BookmarkLocationsFragment.newInstance()
|
fragment = BookmarkLocationsFragment.newInstance()
|
||||||
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,10 @@ import com.nhaarman.mockitokotlin2.any
|
||||||
import com.nhaarman.mockitokotlin2.times
|
import com.nhaarman.mockitokotlin2.times
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.category.GridViewAdapter
|
import fr.free.nrw.commons.category.GridViewAdapter
|
||||||
import fr.free.nrw.commons.media.MediaClient
|
import fr.free.nrw.commons.media.MediaClient
|
||||||
import fr.free.nrw.commons.profile.ProfileActivity
|
import fr.free.nrw.commons.profile.ProfileActivity
|
||||||
|
|
@ -38,7 +39,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows.shadowOf
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -89,7 +89,7 @@ class BookmarkPicturesFragmentUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||||
fragment = BookmarkPicturesFragment.newInstance()
|
fragment = BookmarkPicturesFragment.newInstance()
|
||||||
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,11 @@ package fr.free.nrw.commons.campaigns
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.campaigns.models.Campaign
|
import fr.free.nrw.commons.campaigns.models.Campaign
|
||||||
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -16,7 +17,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.android.controller.ActivityController
|
import org.robolectric.android.controller.ActivityController
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -35,7 +35,7 @@ class CampaignViewUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activityController = Robolectric.buildActivity(Activity::class.java)
|
activityController = Robolectric.buildActivity(Activity::class.java)
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,9 @@ import android.content.Context
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment
|
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
|
@ -18,7 +19,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.fakes.RoboMenu
|
import org.robolectric.fakes.RoboMenu
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -41,7 +41,7 @@ class CategoryDetailsActivityUnitTests {
|
||||||
|
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,10 @@ import android.widget.TextView
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.campaigns.CampaignView
|
import fr.free.nrw.commons.campaigns.CampaignView
|
||||||
import fr.free.nrw.commons.campaigns.models.Campaign
|
import fr.free.nrw.commons.campaigns.models.Campaign
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
|
|
@ -38,7 +39,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -99,7 +99,7 @@ class ContributionsFragmentUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
|
|
|
||||||
|
|
@ -8,23 +8,23 @@ import androidx.lifecycle.Lifecycle
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.upload.WikidataPlace
|
import fr.free.nrw.commons.upload.WikidataPlace
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.ArgumentMatchers.anyInt
|
import org.mockito.ArgumentMatchers.anyInt
|
||||||
|
import org.mockito.Mockito.mock
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.`when`
|
import org.mockito.Mockito.`when`
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import fr.free.nrw.commons.R
|
|
||||||
import org.mockito.Mockito.mock
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -41,7 +41,7 @@ class ContributionsListFragmentUnitTests {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
scenario = launchFragmentInContainer(
|
scenario = launchFragmentInContainer(
|
||||||
initialState = Lifecycle.State.RESUMED,
|
initialState = Lifecycle.State.RESUMED,
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,10 @@ import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.work.Configuration
|
import androidx.work.Configuration
|
||||||
import androidx.work.testing.WorkManagerTestInitHelper
|
import androidx.work.testing.WorkManagerTestInitHelper
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.bookmarks.BookmarkFragment
|
import fr.free.nrw.commons.bookmarks.BookmarkFragment
|
||||||
import fr.free.nrw.commons.contributions.MainActivity.ActiveFragment
|
import fr.free.nrw.commons.contributions.MainActivity.ActiveFragment
|
||||||
import fr.free.nrw.commons.explore.ExploreFragment
|
import fr.free.nrw.commons.explore.ExploreFragment
|
||||||
|
|
@ -36,7 +37,6 @@ import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
@ -85,7 +85,7 @@ class MainActivityUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
activity.applicationKvStore = applicationKvStore
|
activity.applicationKvStore = applicationKvStore
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@ import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.TestUtility.setFinalStatic
|
import fr.free.nrw.commons.TestUtility.setFinalStatic
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -15,12 +16,8 @@ import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.core.classloader.annotations.PrepareForTest
|
import org.powermock.core.classloader.annotations.PrepareForTest
|
||||||
import org.powermock.reflect.Whitebox
|
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
|
||||||
import java.lang.reflect.Modifier
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -46,8 +43,7 @@ internal class OnSwipeTouchListenerTest {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
// motionEvent1 = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 15.0f, 10.0f, 0);
|
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
onSwipeTouchListener = OnSwipeTouchListener(context)
|
onSwipeTouchListener = OnSwipeTouchListener(context)
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ package fr.free.nrw.commons.customselector.ui.selector
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.customselector.model.Image
|
import fr.free.nrw.commons.customselector.model.Image
|
||||||
import fr.free.nrw.commons.customselector.ui.adapter.ImageAdapter
|
import fr.free.nrw.commons.customselector.ui.adapter.ImageAdapter
|
||||||
import kotlinx.android.synthetic.main.bottom_sheet_nearby.bottom_sheet
|
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
|
@ -19,7 +19,6 @@ import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
@ -46,7 +45,7 @@ class CustomSelectorActivityTest {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java)
|
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java)
|
||||||
.get()
|
.get()
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import android.os.Bundle
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import fr.free.nrw.commons.customselector.model.Result
|
|
||||||
import android.widget.ProgressBar
|
import android.widget.ProgressBar
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
|
|
@ -13,10 +12,12 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.customselector.model.CallbackStatus
|
import fr.free.nrw.commons.customselector.model.CallbackStatus
|
||||||
|
import fr.free.nrw.commons.customselector.model.Result
|
||||||
import fr.free.nrw.commons.customselector.ui.adapter.FolderAdapter
|
import fr.free.nrw.commons.customselector.ui.adapter.FolderAdapter
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -30,7 +31,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -62,7 +62,7 @@ class FolderFragmentTest {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
Fresco.initialize(context)
|
Fresco.initialize(context)
|
||||||
val activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,10 @@ import androidx.test.core.app.ApplicationProvider
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.customselector.model.CallbackStatus
|
import fr.free.nrw.commons.customselector.model.CallbackStatus
|
||||||
import fr.free.nrw.commons.customselector.model.Image
|
import fr.free.nrw.commons.customselector.model.Image
|
||||||
import fr.free.nrw.commons.customselector.model.Result
|
import fr.free.nrw.commons.customselector.model.Result
|
||||||
|
|
@ -35,7 +36,6 @@ import org.robolectric.Shadows
|
||||||
import org.robolectric.Shadows.shadowOf
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -74,7 +74,7 @@ class ImageFragmentTest {
|
||||||
fun setUp(){
|
fun setUp(){
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
Fresco.initialize(context)
|
Fresco.initialize(context)
|
||||||
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()
|
||||||
|
|
|
||||||
|
|
@ -7,17 +7,18 @@ import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
|
@ -27,7 +28,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.fakes.RoboMenu
|
import org.robolectric.fakes.RoboMenu
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -56,7 +56,7 @@ class ExploreFragmentUnitTest {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
fragment = ExploreFragment()
|
fragment = ExploreFragment()
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,10 @@ import com.google.android.material.tabs.TabLayout
|
||||||
import com.nhaarman.mockitokotlin2.any
|
import com.nhaarman.mockitokotlin2.any
|
||||||
import com.nhaarman.mockitokotlin2.times
|
import com.nhaarman.mockitokotlin2.times
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment
|
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment
|
||||||
import fr.free.nrw.commons.media.MediaDetailPagerFragment
|
import fr.free.nrw.commons.media.MediaDetailPagerFragment
|
||||||
|
|
@ -23,15 +24,14 @@ import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.ArgumentMatchers.anyInt
|
import org.mockito.ArgumentMatchers.anyInt
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -76,7 +76,7 @@ class ExploreListRootFragmentUnitTest {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
fragment = ExploreListRootFragment()
|
fragment = ExploreListRootFragment()
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,10 @@ import androidx.fragment.app.FragmentManager
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.explore.depictions.media.DepictedImagesFragment
|
import fr.free.nrw.commons.explore.depictions.media.DepictedImagesFragment
|
||||||
import fr.free.nrw.commons.media.MediaDetailPagerFragment
|
import fr.free.nrw.commons.media.MediaDetailPagerFragment
|
||||||
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
|
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
|
||||||
|
|
@ -28,7 +29,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.fakes.RoboMenu
|
import org.robolectric.fakes.RoboMenu
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -65,7 +65,7 @@ class WikidataItemDetailsActivityUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
val intent = Intent(
|
val intent = Intent(
|
||||||
ApplicationProvider.getApplicationContext(),
|
ApplicationProvider.getApplicationContext(),
|
||||||
WikidataItemDetailsActivity::class.java
|
WikidataItemDetailsActivity::class.java
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,11 @@ import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -27,7 +28,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -67,7 +67,7 @@ class RecentSearchesFragmentUnitTest {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
val activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
fragment = RecentSearchesFragment()
|
fragment = RecentSearchesFragment()
|
||||||
|
|
|
||||||
|
|
@ -3,20 +3,17 @@ package fr.free.nrw.commons.feedback
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import fr.free.nrw.commons.FakeContextWrapper
|
import fr.free.nrw.commons.FakeContextWrapper
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.feedback.model.Feedback
|
import fr.free.nrw.commons.feedback.model.Feedback
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
|
||||||
import org.mockito.Mockito.doReturn
|
|
||||||
import org.mockito.Mockito.mock
|
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -29,7 +26,7 @@ class FeedbackContentCreatorUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
context = FakeContextWrapper(ApplicationProvider.getApplicationContext())
|
context = FakeContextWrapper(ApplicationProvider.getApplicationContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,20 @@ import android.os.Looper.getMainLooper
|
||||||
import android.text.Editable
|
import android.text.Editable
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.nhaarman.mockitokotlin2.doReturn
|
import com.nhaarman.mockitokotlin2.doReturn
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.TestUtility.setFinalStatic
|
import fr.free.nrw.commons.TestUtility.setFinalStatic
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import fr.free.nrw.commons.databinding.DialogFeedbackBinding
|
import fr.free.nrw.commons.databinding.DialogFeedbackBinding
|
||||||
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
|
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Rule
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
|
@ -26,7 +26,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows.shadowOf
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -45,7 +44,7 @@ class FeedbackDialogTests {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
val activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,10 @@ import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.auth.SessionManager
|
import fr.free.nrw.commons.auth.SessionManager
|
||||||
import fr.free.nrw.commons.profile.ProfileActivity
|
import fr.free.nrw.commons.profile.ProfileActivity
|
||||||
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment
|
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment
|
||||||
|
|
@ -28,17 +29,14 @@ import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.Mockito.doReturn
|
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows
|
|
||||||
import org.robolectric.Shadows.shadowOf
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.shadows.ShadowToast
|
import org.robolectric.shadows.ShadowToast
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -84,7 +82,7 @@ class LeaderboardFragmentUnitTests {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||||
fragment = LeaderboardFragment()
|
fragment = LeaderboardFragment()
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,10 @@ import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.auth.LoginActivity
|
import fr.free.nrw.commons.auth.LoginActivity
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
|
@ -20,7 +21,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@ class LoginActivityUnitTests {
|
||||||
|
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,14 @@ import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.drawee.generic.GenericDraweeHierarchy
|
import com.facebook.drawee.generic.GenericDraweeHierarchy
|
||||||
import com.facebook.drawee.view.SimpleDraweeView
|
import com.facebook.drawee.view.SimpleDraweeView
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
|
||||||
import com.nhaarman.mockitokotlin2.doReturn
|
import com.nhaarman.mockitokotlin2.doReturn
|
||||||
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
|
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.delete.DeleteHelper
|
import fr.free.nrw.commons.delete.DeleteHelper
|
||||||
import fr.free.nrw.commons.delete.ReasonBuilder
|
import fr.free.nrw.commons.delete.ReasonBuilder
|
||||||
import fr.free.nrw.commons.explore.SearchActivity
|
import fr.free.nrw.commons.explore.SearchActivity
|
||||||
|
|
@ -50,7 +51,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.shadows.ShadowActivity
|
import org.robolectric.shadows.ShadowActivity
|
||||||
import org.robolectric.shadows.ShadowIntent
|
import org.robolectric.shadows.ShadowIntent
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
@ -154,7 +154,7 @@ class MediaDetailFragmentUnitTests {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,9 @@ import com.nhaarman.mockitokotlin2.never
|
||||||
import com.nhaarman.mockitokotlin2.times
|
import com.nhaarman.mockitokotlin2.times
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.auth.SessionManager
|
import fr.free.nrw.commons.auth.SessionManager
|
||||||
import fr.free.nrw.commons.explore.SearchActivity
|
import fr.free.nrw.commons.explore.SearchActivity
|
||||||
import io.reactivex.android.plugins.RxAndroidPlugins
|
import io.reactivex.android.plugins.RxAndroidPlugins
|
||||||
|
|
@ -37,7 +38,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import java.util.concurrent.Callable
|
import java.util.concurrent.Callable
|
||||||
|
|
@ -77,7 +77,7 @@ class MediaDetailPagerFragmentUnitTests {
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,9 @@ import android.net.Uri
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.customselector.model.CallbackStatus
|
import fr.free.nrw.commons.customselector.model.CallbackStatus
|
||||||
import fr.free.nrw.commons.customselector.model.Image
|
import fr.free.nrw.commons.customselector.model.Image
|
||||||
import fr.free.nrw.commons.customselector.model.Result
|
import fr.free.nrw.commons.customselector.model.Result
|
||||||
|
|
@ -22,7 +23,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -44,7 +44,7 @@ class ZoomableActivityUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
Fresco.initialize(context)
|
Fresco.initialize(context)
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,15 @@ import android.os.Looper
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.actions.PageEditClient
|
import fr.free.nrw.commons.actions.PageEditClient
|
||||||
import fr.free.nrw.commons.feedback.model.Feedback
|
import fr.free.nrw.commons.feedback.model.Feedback
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
|
|
@ -38,7 +38,6 @@ import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.shadows.ShadowActivity
|
import org.robolectric.shadows.ShadowActivity
|
||||||
import org.robolectric.shadows.ShadowAlertDialog
|
import org.robolectric.shadows.ShadowAlertDialog
|
||||||
import org.robolectric.shadows.ShadowDialog
|
import org.robolectric.shadows.ShadowDialog
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -63,7 +62,7 @@ class MoreBottomSheetFragmentUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||||
fragment = MoreBottomSheetFragment()
|
fragment = MoreBottomSheetFragment()
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,11 @@ import androidx.appcompat.widget.AppCompatButton
|
||||||
import androidx.appcompat.widget.AppCompatEditText
|
import androidx.appcompat.widget.AppCompatEditText
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.nearby.fragments.AdvanceQueryFragment
|
import fr.free.nrw.commons.nearby.fragments.AdvanceQueryFragment
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertNotNull
|
import org.junit.Assert.assertNotNull
|
||||||
|
|
@ -19,8 +20,8 @@ import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
|
|
@ -28,7 +29,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
|
@ -60,7 +60,7 @@ class AdvanceQueryFragmentUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
|
|
||||||
fragment = AdvanceQueryFragment()
|
fragment = AdvanceQueryFragment()
|
||||||
|
|
|
||||||
|
|
@ -21,13 +21,13 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
import com.mapbox.mapboxsdk.camera.CameraPosition
|
import com.mapbox.mapboxsdk.camera.CameraPosition
|
||||||
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
|
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
|
||||||
import com.mapbox.mapboxsdk.geometry.LatLng
|
import com.mapbox.mapboxsdk.geometry.LatLng
|
||||||
import com.mapbox.mapboxsdk.maps.MapView
|
|
||||||
import com.mapbox.mapboxsdk.maps.MapboxMap
|
import com.mapbox.mapboxsdk.maps.MapboxMap
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao
|
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
|
|
@ -53,7 +53,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.shadows.ShadowActivity
|
import org.robolectric.shadows.ShadowActivity
|
||||||
import org.robolectric.shadows.ShadowAlertDialog
|
import org.robolectric.shadows.ShadowAlertDialog
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -132,7 +131,7 @@ class NearbyParentFragmentUnitTest {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
|
||||||
|
|
||||||
fragment = NearbyParentFragment()
|
fragment = NearbyParentFragment()
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,11 @@ import android.content.Intent
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.ShadowActionBar
|
import fr.free.nrw.commons.ShadowActionBar
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.notification.models.Notification
|
import fr.free.nrw.commons.notification.models.Notification
|
||||||
import fr.free.nrw.commons.notification.models.NotificationType
|
import fr.free.nrw.commons.notification.models.NotificationType
|
||||||
import fr.free.nrw.commons.utils.NetworkUtils
|
import fr.free.nrw.commons.utils.NetworkUtils
|
||||||
|
|
@ -17,15 +18,14 @@ import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
|
import org.mockito.Mockito.`when`
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.fakes.RoboMenu
|
import org.robolectric.fakes.RoboMenu
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ class NotificationActivityUnitTests {
|
||||||
|
|
||||||
networkUtils = mock(NetworkUtils::class.java)
|
networkUtils = mock(NetworkUtils::class.java)
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
val intent = Intent().putExtra("title", "read")
|
val intent = Intent().putExtra("title", "read")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,13 @@ import android.view.LayoutInflater
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageView
|
|
||||||
import android.widget.ProgressBar
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentTransaction
|
import androidx.fragment.app.FragmentTransaction
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import com.dinuscxj.progressbar.CircleProgressBar
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.auth.SessionManager
|
import fr.free.nrw.commons.auth.SessionManager
|
||||||
import fr.free.nrw.commons.profile.ProfileActivity
|
import fr.free.nrw.commons.profile.ProfileActivity
|
||||||
import fr.free.nrw.commons.utils.ConfigUtils
|
import fr.free.nrw.commons.utils.ConfigUtils
|
||||||
|
|
@ -35,7 +32,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.robolectric.shadows.ShadowToast
|
import org.robolectric.shadows.ShadowToast
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -76,7 +72,8 @@ class AchievementsFragmentUnitTests {
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
menuItem = RoboMenuItem(context)
|
menuItem = RoboMenuItem(context)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||||
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
||||||
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
|
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
|
||||||
|
|
|
||||||
|
|
@ -4,19 +4,15 @@ import android.content.Context
|
||||||
import android.os.Looper.getMainLooper
|
import android.os.Looper.getMainLooper
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.Button
|
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import butterknife.BindView
|
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
import com.nhaarman.mockitokotlin2.doNothing
|
import com.nhaarman.mockitokotlin2.doNothing
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
import io.reactivex.Scheduler
|
import fr.free.nrw.commons.createTestClient
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import io.reactivex.schedulers.Schedulers
|
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -25,7 +21,6 @@ import org.mockito.ArgumentMatchers
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.*
|
import org.mockito.Mockito.*
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.mockito.Spy
|
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.Robolectric
|
import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
|
@ -34,7 +29,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.fakes.RoboMenu
|
import org.robolectric.fakes.RoboMenu
|
||||||
import org.robolectric.fakes.RoboMenuItem
|
import org.robolectric.fakes.RoboMenuItem
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -70,7 +64,7 @@ class ReviewActivityTest {
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,13 @@ import com.facebook.soloader.SoLoader
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.delete.DeleteHelper
|
import fr.free.nrw.commons.delete.DeleteHelper
|
||||||
import org.junit.Assert.assertEquals
|
|
||||||
import media
|
import media
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertNotNull
|
import org.junit.Assert.assertNotNull
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -29,7 +30,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.shadows.ShadowNotificationManager
|
import org.robolectric.shadows.ShadowNotificationManager
|
||||||
import org.robolectric.shadows.ShadowToast
|
import org.robolectric.shadows.ShadowToast
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import org.wikipedia.dataclient.mwapi.MwQueryPage
|
import org.wikipedia.dataclient.mwapi.MwQueryPage
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
@ -58,7 +58,7 @@ class ReviewControllerTest {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
Fresco.initialize(context)
|
Fresco.initialize(context)
|
||||||
activity = Robolectric.buildActivity(ReviewActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(ReviewActivity::class.java).create().get()
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,16 @@ import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
import com.nhaarman.mockitokotlin2.doReturn
|
import com.nhaarman.mockitokotlin2.doReturn
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
|
|
@ -32,7 +32,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows.shadowOf
|
import org.robolectric.Shadows.shadowOf
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -63,7 +62,7 @@ class ReviewImageFragmentTest {
|
||||||
|
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
|
|
||||||
Fresco.initialize(context)
|
Fresco.initialize(context)
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,16 @@ import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.work.Configuration
|
import androidx.work.Configuration
|
||||||
import androidx.work.testing.WorkManagerTestInitHelper
|
import androidx.work.testing.WorkManagerTestInitHelper
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.contributions.ContributionController
|
import fr.free.nrw.commons.contributions.ContributionController
|
||||||
import fr.free.nrw.commons.filepicker.UploadableFile
|
import fr.free.nrw.commons.filepicker.UploadableFile
|
||||||
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment
|
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment
|
||||||
import fr.free.nrw.commons.upload.license.MediaLicenseFragment
|
import fr.free.nrw.commons.upload.license.MediaLicenseFragment
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Ignore
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
|
@ -26,7 +26,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -53,7 +52,7 @@ class UploadActivityUnitTests {
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
val list = ArrayList<UploadableFile>()
|
val list = ArrayList<UploadableFile>()
|
||||||
list.add(uploadableFile)
|
list.add(uploadableFile)
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,11 @@ import androidx.test.core.app.ApplicationProvider
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
import com.nhaarman.mockitokotlin2.times
|
import com.nhaarman.mockitokotlin2.times
|
||||||
import com.nhaarman.mockitokotlin2.verify
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
|
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
|
||||||
import fr.free.nrw.commons.upload.UploadActivity
|
import fr.free.nrw.commons.upload.UploadActivity
|
||||||
import fr.free.nrw.commons.upload.UploadBaseFragment
|
import fr.free.nrw.commons.upload.UploadBaseFragment
|
||||||
|
|
@ -39,7 +39,6 @@ import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.Shadows
|
import org.robolectric.Shadows
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -103,7 +102,7 @@ class UploadCategoriesFragmentUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
||||||
fragment = UploadCategoriesFragment()
|
fragment = UploadCategoriesFragment()
|
||||||
fragmentManager = activity.supportFragmentManager
|
fragmentManager = activity.supportFragmentManager
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,10 @@ import com.google.android.material.textfield.TextInputLayout
|
||||||
import com.nhaarman.mockitokotlin2.whenever
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
import depictedItem
|
import depictedItem
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
|
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
|
||||||
import fr.free.nrw.commons.upload.UploadActivity
|
import fr.free.nrw.commons.upload.UploadActivity
|
||||||
|
|
@ -36,7 +37,6 @@ import org.robolectric.Robolectric
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -96,7 +96,7 @@ class DepictsFragmentUnitTests {
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
||||||
fragment = DepictsFragment()
|
fragment = DepictsFragment()
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,10 @@ import com.mapbox.mapboxsdk.geometry.LatLng
|
||||||
import com.nhaarman.mockitokotlin2.mock
|
import com.nhaarman.mockitokotlin2.mock
|
||||||
import fr.free.nrw.commons.LocationPicker.LocationPicker
|
import fr.free.nrw.commons.LocationPicker.LocationPicker
|
||||||
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
|
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
|
||||||
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import fr.free.nrw.commons.nearby.Place
|
import fr.free.nrw.commons.nearby.Place
|
||||||
import fr.free.nrw.commons.upload.ImageCoordinates
|
import fr.free.nrw.commons.upload.ImageCoordinates
|
||||||
|
|
@ -50,7 +51,6 @@ import org.robolectric.annotation.Config
|
||||||
import org.robolectric.annotation.LooperMode
|
import org.robolectric.annotation.LooperMode
|
||||||
import org.robolectric.shadows.ShadowActivity
|
import org.robolectric.shadows.ShadowActivity
|
||||||
import org.robolectric.shadows.ShadowIntent
|
import org.robolectric.shadows.ShadowIntent
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -115,7 +115,7 @@ class UploadMediaDetailFragmentUnitTest {
|
||||||
MockitoAnnotations.openMocks(this)
|
MockitoAnnotations.openMocks(this)
|
||||||
|
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
|
|
||||||
activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
||||||
layoutInflater = LayoutInflater.from(activity)
|
layoutInflater = LayoutInflater.from(activity)
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@ import androidx.test.core.app.ApplicationProvider
|
||||||
import com.facebook.imagepipeline.core.ImagePipelineFactory
|
import com.facebook.imagepipeline.core.ImagePipelineFactory
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
import fr.free.nrw.commons.TestAppAdapter
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
import fr.free.nrw.commons.TestCommonsApplication
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
import fr.free.nrw.commons.createTestClient
|
||||||
import fr.free.nrw.commons.media.MediaClient
|
import fr.free.nrw.commons.media.MediaClient
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
|
|
@ -22,7 +23,6 @@ import org.mockito.MockitoAnnotations
|
||||||
import org.powermock.reflect.Whitebox
|
import org.powermock.reflect.Whitebox
|
||||||
import org.robolectric.RobolectricTestRunner
|
import org.robolectric.RobolectricTestRunner
|
||||||
import org.robolectric.annotation.Config
|
import org.robolectric.annotation.Config
|
||||||
import org.wikipedia.AppAdapter
|
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner::class)
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
|
@ -46,7 +46,7 @@ class PicOfDayAppWidgetUnitTests {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
AppAdapter.set(TestAppAdapter())
|
OkHttpConnectionFactory.CLIENT = createTestClient()
|
||||||
context = ApplicationProvider.getApplicationContext()
|
context = ApplicationProvider.getApplicationContext()
|
||||||
SoLoader.setInTestMode()
|
SoLoader.setInTestMode()
|
||||||
ImagePipelineFactory.initialize(context)
|
ImagePipelineFactory.initialize(context)
|
||||||
|
|
|
||||||
|
|
@ -7,20 +7,19 @@ import org.wikipedia.dataclient.SharedPreferenceCookieManager;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
|
|
||||||
public abstract class AppAdapter {
|
public abstract class AppAdapter {
|
||||||
|
private final int DEFAULT_THUMB_SIZE = 640;
|
||||||
|
|
||||||
public abstract String getMediaWikiBaseUrl();
|
|
||||||
public abstract String getRestbaseUriFormat();
|
|
||||||
public abstract OkHttpClient getOkHttpClient();
|
public abstract OkHttpClient getOkHttpClient();
|
||||||
public abstract int getDesiredLeadImageDp();
|
|
||||||
|
|
||||||
public abstract boolean isLoggedIn();
|
// Unused from commons app, implement here as a temporary step during refactoring
|
||||||
public abstract String getUserName();
|
public String getRestbaseUriFormat() {
|
||||||
public abstract String getPassword();
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public abstract SharedPreferenceCookieManager getCookies();
|
// Unused from commons app, implement here as a temporary step during refactoring
|
||||||
public abstract void setCookies(@NonNull SharedPreferenceCookieManager cookies);
|
public int getDesiredLeadImageDp() {
|
||||||
|
return DEFAULT_THUMB_SIZE;
|
||||||
public abstract boolean logErrorsInsteadOfCrashing();
|
}
|
||||||
|
|
||||||
private static AppAdapter INSTANCE;
|
private static AppAdapter INSTANCE;
|
||||||
public static void set(AppAdapter instance) {
|
public static void set(AppAdapter instance) {
|
||||||
|
|
|
||||||
|
|
@ -28,13 +28,13 @@ public final class SharedPreferenceCookieManager implements CookieJar {
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static SharedPreferenceCookieManager getInstance() {
|
public static SharedPreferenceCookieManager getInstance() {
|
||||||
if (INSTANCE == null) {
|
// if (INSTANCE == null) {
|
||||||
try {
|
// try {
|
||||||
INSTANCE = AppAdapter.get().getCookies();
|
// INSTANCE = AppAdapter.get().getCookies();
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
L.logRemoteErrorIfProd(e);
|
// L.logRemoteErrorIfProd(e);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if (INSTANCE == null) {
|
if (INSTANCE == null) {
|
||||||
INSTANCE = new SharedPreferenceCookieManager();
|
INSTANCE = new SharedPreferenceCookieManager();
|
||||||
}
|
}
|
||||||
|
|
@ -54,7 +54,7 @@ public final class SharedPreferenceCookieManager implements CookieJar {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void persistCookies() {
|
private void persistCookies() {
|
||||||
AppAdapter.get().setCookies(this);
|
// AppAdapter.get().setCookies(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void clearAllCookies() {
|
public synchronized void clearAllCookies() {
|
||||||
|
|
|
||||||
|
|
@ -30,24 +30,24 @@ public class CookieManagerTypeAdapter extends TypeAdapter<SharedPreferenceCookie
|
||||||
out.endObject();
|
out.endObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public SharedPreferenceCookieManager read(JsonReader in) throws IOException {
|
@Override public SharedPreferenceCookieManager read(JsonReader input) throws IOException {
|
||||||
Map<String, List<Cookie>> map = new HashMap<>();
|
Map<String, List<Cookie>> map = new HashMap<>();
|
||||||
in.beginObject();
|
input.beginObject();
|
||||||
while (in.hasNext()) {
|
while (input.hasNext()) {
|
||||||
String key = in.nextName();
|
String key = input.nextName();
|
||||||
List<Cookie> list = new ArrayList<>();
|
List<Cookie> list = new ArrayList<>();
|
||||||
map.put(key, list);
|
map.put(key, list);
|
||||||
in.beginArray();
|
input.beginArray();
|
||||||
HttpUrl url = HttpUrl.parse(WikiSite.DEFAULT_SCHEME + "://" + key);
|
HttpUrl url = HttpUrl.parse(WikiSite.DEFAULT_SCHEME + "://" + key);
|
||||||
while (in.hasNext()) {
|
while (input.hasNext()) {
|
||||||
String str = in.nextString();
|
String str = input.nextString();
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
list.add(Cookie.parse(url, str));
|
list.add(Cookie.parse(url, str));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
in.endArray();
|
input.endArray();
|
||||||
}
|
}
|
||||||
in.endObject();
|
input.endObject();
|
||||||
return new SharedPreferenceCookieManager(map);
|
return new SharedPreferenceCookieManager(map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -107,11 +107,12 @@ public final class L {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void logRemoteErrorIfProd(@NonNull Throwable t) {
|
public static void logRemoteErrorIfProd(@NonNull Throwable t) {
|
||||||
if (AppAdapter.get().logErrorsInsteadOfCrashing()) {
|
// Since "logErrorsInsteadOfCrashing()" only ever returns false...
|
||||||
logRemoteError(t);
|
// if (AppAdapter.get().logErrorsInsteadOfCrashing()) {
|
||||||
} else {
|
// logRemoteError(t);
|
||||||
|
// } else {
|
||||||
throw new RuntimeException(t);
|
throw new RuntimeException(t);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setRemoteLogger(@Nullable RemoteExceptionLogger logger) {
|
public static void setRemoteLogger(@Nullable RemoteExceptionLogger logger) {
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,11 @@
|
||||||
package org.wikipedia;
|
package org.wikipedia;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import okhttp3.OkHttpClient;
|
||||||
|
|
||||||
import org.wikipedia.dataclient.Service;
|
|
||||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
|
|
||||||
import org.wikipedia.dataclient.okhttp.TestStubInterceptor;
|
import org.wikipedia.dataclient.okhttp.TestStubInterceptor;
|
||||||
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor;
|
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor;
|
||||||
import org.wikipedia.login.LoginResult;
|
|
||||||
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
|
|
||||||
public class TestAppAdapter extends AppAdapter {
|
public class TestAppAdapter extends AppAdapter {
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMediaWikiBaseUrl() {
|
|
||||||
return Service.WIKIPEDIA_URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRestbaseUriFormat() {
|
|
||||||
return "%1$s://%2$s/api/rest_v1/";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OkHttpClient getOkHttpClient() {
|
public OkHttpClient getOkHttpClient() {
|
||||||
return new OkHttpClient.Builder()
|
return new OkHttpClient.Builder()
|
||||||
|
|
@ -30,41 +14,4 @@ public class TestAppAdapter extends AppAdapter {
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDesiredLeadImageDp() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isLoggedIn() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUserName() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPassword() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateAccount(@NonNull LoginResult result) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SharedPreferenceCookieManager getCookies() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCookies(@NonNull SharedPreferenceCookieManager cookies) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean logErrorsInsteadOfCrashing() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue