Merge remote-tracking branch 'origin/main'

# Conflicts:
#	app/src/main/java/fr/free/nrw/commons/utils/PermissionUtils.java
This commit is contained in:
Kanahia 2023-10-21 03:00:24 +05:30
commit b75193b8ba
138 changed files with 465 additions and 474 deletions

View file

@ -17,8 +17,8 @@ jobs:
- name: Set up JDK - name: Set up JDK
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
distribution: "temurin" distribution: 'temurin'
java-version: 11 java-version: '17'
- name: Cache packages - name: Cache packages
id: cache-packages id: cache-packages

View file

@ -20,8 +20,10 @@ dependencies {
// Utils // Utils
implementation 'in.yuvi:http.fluent:1.3' implementation 'in.yuvi:http.fluent:1.3'
implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.google.code.gson:gson:2.8.5'
implementation ("com.squareup.okhttp3:okhttp:$OKHTTP_VERSION"){ implementation ("com.squareup.okhttp3:okhttp:$OKHTTP_VERSION!!"){
force = true //API 19 support // Forcing dependency versions using force = true on a first-level dependency has been deprecated.
// Ref: https://docs.gradle.org/7.5/userguide/upgrading_version_5.html#forced_dependencies
//force = true //API 19 support
} }
implementation 'com.squareup.okio:okio:2.2.2' implementation 'com.squareup.okio:okio:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
@ -78,22 +80,22 @@ dependencies {
//Mocking //Mocking
testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0' testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0'
testImplementation 'org.mockito:mockito-inline:2.13.0' testImplementation 'org.mockito:mockito-inline:5.2.0'
testImplementation 'org.mockito:mockito-core:2.25.1' testImplementation 'org.mockito:mockito-core:5.5.0'
testImplementation "org.powermock:powermock-module-junit4:2.0.2" testImplementation "org.powermock:powermock-module-junit4:2.0.9"
testImplementation "org.powermock:powermock-api-mockito2:2.0.2" testImplementation "org.powermock:powermock-api-mockito2:2.0.9"
// Unit testing // Unit testing
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
testImplementation 'org.robolectric:robolectric:4.6.1' testImplementation 'org.robolectric:robolectric:4.10.3'
testImplementation 'androidx.test:core:1.4.0' testImplementation 'androidx.test:core:1.5.0'
testImplementation "com.squareup.okhttp3:mockwebserver:$OKHTTP_VERSION" testImplementation "com.squareup.okhttp3:mockwebserver:$OKHTTP_VERSION"
testImplementation "com.jraska.livedata:testing-ktx:1.1.2" testImplementation "com.jraska.livedata:testing-ktx:1.1.2"
testImplementation "androidx.arch.core:core-testing:2.1.0" testImplementation "androidx.arch.core:core-testing:2.2.0"
testImplementation "org.junit.jupiter:junit-jupiter-api:5.7.0" testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.7.0" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.0"
testImplementation 'com.facebook.soloader:soloader:0.10.1' testImplementation 'com.facebook.soloader:soloader:0.10.1'
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.0" testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3"
// Android testing // Android testing
androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION" androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
@ -119,8 +121,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "androidx.exifinterface:exifinterface:1.3.2" implementation "androidx.exifinterface:exifinterface:1.3.2"
implementation "androidx.core:core-ktx:$CORE_KTX_VERSION" implementation "androidx.core:core-ktx:$CORE_KTX_VERSION"
implementation "androidx.multidex:multidex:2.0.1" implementation 'com.simplecityapps:recyclerview-fastscroll:2.0.1'
compile 'com.simplecityapps:recyclerview-fastscroll:2.0.1'
//swipe_layout //swipe_layout
implementation 'com.daimajia.swipelayout:library:1.2.0@aar' implementation 'com.daimajia.swipelayout:library:1.2.0@aar'
@ -151,6 +152,8 @@ dependencies {
//Glide //Glide
implementation 'com.github.bumptech.glide:glide:4.12.0' implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
kaptTest "androidx.databinding:databinding-compiler:8.0.2"
kaptAndroidTest "androidx.databinding:databinding-compiler:8.0.2"
implementation("io.github.coordinates2country:coordinates2country-android:1.3") { exclude group: 'com.google.android', module: 'android' } implementation("io.github.coordinates2country:coordinates2country-android:1.3") { exclude group: 'com.google.android', module: 'android' }
} }
@ -188,12 +191,16 @@ android {
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
} }
packagingOptions { packagingOptions {
exclude 'META-INF/androidx.*' jniLibs {
exclude 'META-INF/proguard/androidx-annotations.pro' excludes += ['META-INF/androidx.*']
}
resources {
excludes += ['META-INF/androidx.*', 'META-INF/proguard/androidx-annotations.pro']
}
} }
testOptions { testOptions {
animationsDisabled true animationsDisabled true
@ -326,11 +333,6 @@ android {
} }
} }
lintOptions {
disable 'MissingTranslation'
disable 'ExtraTranslation'
abortOnError false
}
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
@ -342,7 +344,11 @@ android {
buildFeatures { buildFeatures {
viewBinding true viewBinding true
} }
namespace 'fr.free.nrw.commons'
lint {
abortOnError false
disable 'MissingTranslation', 'ExtraTranslation'
}
} }
String getTestUserName() { String getTestUserName() {

View file

@ -31,6 +31,8 @@
-keepattributes Signature -keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance. # Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions -keepattributes Exceptions
# Classes used by retrofit to fetch API repsonse
-keepclasseswithmembers class org.wikipedia.** { *; }
# --- /Retrofit --- # --- /Retrofit ---
# --- OkHttp + Okio --- # --- OkHttp + Okio ---

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools">
package="fr.free.nrw.commons">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />

View file

@ -41,8 +41,9 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.utils.DialogUtil;
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.utils.DialogUtil;
import fr.free.nrw.commons.utils.SystemThemeUtils; import fr.free.nrw.commons.utils.SystemThemeUtils;
import fr.free.nrw.commons.utils.ViewUtil; import fr.free.nrw.commons.utils.ViewUtil;
import java.util.Locale; import java.util.Locale;
@ -52,7 +53,6 @@ import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.wikipedia.dataclient.WikiSite; import org.wikipedia.dataclient.WikiSite;
import fr.free.nrw.commons.profile.ProfileActivity;
/** /**
@ -112,7 +112,8 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl
private ContributionsListAdapter adapter; private ContributionsListAdapter adapter;
@Nullable private Callback callback; @Nullable
private Callback callback;
private final int SPAN_COUNT_LANDSCAPE = 3; private final int SPAN_COUNT_LANDSCAPE = 3;
private final int SPAN_COUNT_PORTRAIT = 1; private final int SPAN_COUNT_PORTRAIT = 1;
@ -142,7 +143,8 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl
@Override @Override
public void onCreate(@Nullable @org.jetbrains.annotations.Nullable final Bundle savedInstanceState) { public void onCreate(
@Nullable @org.jetbrains.annotations.Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//Now that we are allowing this fragment to be started for //Now that we are allowing this fragment to be started for
// any userName- we expect it to be passed as an argument // any userName- we expect it to be passed as an argument
@ -336,7 +338,7 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl
* Launch Custom Selector. * Launch Custom Selector.
*/ */
@OnClick(R.id.fab_custom_gallery) @OnClick(R.id.fab_custom_gallery)
void launchCustomSelector(){ void launchCustomSelector() {
controller.initiateCustomGalleryPickWithPermission(getActivity()); controller.initiateCustomGalleryPickWithPermission(getActivity());
animateFAB(isFabOpen); animateFAB(isFabOpen);
} }
@ -348,24 +350,24 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl
private void animateFAB(final boolean isFabOpen) { private void animateFAB(final boolean isFabOpen) {
this.isFabOpen = !isFabOpen; this.isFabOpen = !isFabOpen;
if (fabPlus.isShown()) { if (fabPlus.isShown()) {
if (isFabOpen) { if (isFabOpen) {
fabPlus.startAnimation(rotate_backward); fabPlus.startAnimation(rotate_backward);
fabCamera.startAnimation(fab_close); fabCamera.startAnimation(fab_close);
fabGallery.startAnimation(fab_close); fabGallery.startAnimation(fab_close);
fabCustomGallery.startAnimation(fab_close); fabCustomGallery.startAnimation(fab_close);
fabCamera.hide(); fabCamera.hide();
fabGallery.hide(); fabGallery.hide();
fabCustomGallery.hide(); fabCustomGallery.hide();
} else { } else {
fabPlus.startAnimation(rotate_forward); fabPlus.startAnimation(rotate_forward);
fabCamera.startAnimation(fab_open); fabCamera.startAnimation(fab_open);
fabGallery.startAnimation(fab_open); fabGallery.startAnimation(fab_open);
fabCustomGallery.startAnimation(fab_open); fabCustomGallery.startAnimation(fab_open);
fabCamera.show(); fabCamera.show();
fabGallery.show(); fabGallery.show();
fabCustomGallery.show(); fabCustomGallery.show();
} }
this.isFabOpen = !isFabOpen; this.isFabOpen = !isFabOpen;
} }
} }

View file

@ -1,5 +1,7 @@
package fr.free.nrw.commons.filepicker; package fr.free.nrw.commons.filepicker;
import static fr.free.nrw.commons.filepicker.PickedFiles.singleFileList;
import android.app.Activity; import android.app.Activity;
import android.content.ClipData; import android.content.ClipData;
import android.content.Context; import android.content.Context;
@ -8,13 +10,11 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.net.Uri; import android.net.Uri;
import androidx.preference.PreferenceManager;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.preference.PreferenceManager;
import fr.free.nrw.commons.customselector.model.Image; import fr.free.nrw.commons.customselector.model.Image;
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity; import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity;
import java.io.File; import java.io.File;
@ -23,8 +23,6 @@ import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static fr.free.nrw.commons.filepicker.PickedFiles.singleFileList;
public class FilePicker implements Constants { public class FilePicker implements Constants {
private static final String KEY_PHOTO_URI = "photo_uri"; private static final String KEY_PHOTO_URI = "photo_uri";

View file

@ -5,6 +5,7 @@ import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import javax.inject.Inject; import javax.inject.Inject;
@ -49,21 +50,29 @@ public class NotificationHelper {
* @param intent the intent to be fired when the notification is clicked * @param intent the intent to be fired when the notification is clicked
*/ */
public void showNotification(Context context, public void showNotification(Context context,
String notificationTitle, String notificationTitle,
String notificationMessage, String notificationMessage,
int notificationId, int notificationId,
Intent intent) { Intent intent) {
notificationBuilder.setDefaults(DEFAULT_ALL) notificationBuilder.setDefaults(DEFAULT_ALL)
.setContentTitle(notificationTitle) .setContentTitle(notificationTitle)
.setStyle(new NotificationCompat.BigTextStyle() .setStyle(new NotificationCompat.BigTextStyle()
.bigText(notificationMessage)) .bigText(notificationMessage))
.setSmallIcon(R.drawable.ic_launcher) .setSmallIcon(R.drawable.ic_launcher)
.setProgress(0, 0, false) .setProgress(0, 0, false)
.setOngoing(false) .setOngoing(false)
.setPriority(PRIORITY_HIGH); .setPriority(PRIORITY_HIGH);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); int flags = PendingIntent.FLAG_UPDATE_CURRENT;
// Check if the API level is 31 or higher to modify the flag
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// For API level 31 or above, PendingIntent requires either FLAG_IMMUTABLE or FLAG_MUTABLE to be set
flags |= PendingIntent.FLAG_IMMUTABLE;
}
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intent, flags);
notificationBuilder.setContentIntent(pendingIntent); notificationBuilder.setContentIntent(pendingIntent);
notificationManager.notify(notificationId, notificationBuilder.build()); notificationManager.notify(notificationId, notificationBuilder.build());
} }

View file

@ -225,7 +225,6 @@ class DepictsPresenter @Inject constructor(
) )
} }
) )
} }
} else { } else {
repository.cleanup() repository.cleanup()

View file

@ -10,14 +10,15 @@ import android.provider.Settings;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.karumi.dexter.Dexter; import com.karumi.dexter.Dexter;
import com.karumi.dexter.MultiplePermissionsReport; import com.karumi.dexter.MultiplePermissionsReport;
import com.karumi.dexter.PermissionToken; import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionRequest; import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.multi.MultiplePermissionsListener; import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.upload.UploadActivity;
import java.util.List; import java.util.List;
@ -82,14 +83,14 @@ public class PermissionUtils {
* <p> * <p>
* Sample usage: * Sample usage:
* <p> * <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, * PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
* Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), * () -> initiateCameraUpload(activity), R.string.storage_permission_title,
* R.string.storage_permission_title, R.string.write_storage_permission_rationale); * R.string.write_storage_permission_rationale);
* <p> * <p>
* If you don't want the permission rationale to be shown then use: * If you don't want the permission rationale to be shown then use:
* <p> * <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, * PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
* Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), - 1, -1); * () -> initiateCameraUpload(activity), - 1, -1);
* *
* @param activity activity requesting permissions * @param activity activity requesting permissions
* @param permissions the permissions array being requests * @param permissions the permissions array being requests
@ -112,9 +113,8 @@ public class PermissionUtils {
* <p> * <p>
* Sample usage: * Sample usage:
* <p> * <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, * PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
* Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), () -> * () -> initiateCameraUpload(activity), () -> showMessage(), R.string.storage_permission_title,
* showMessage(), R.string.storage_permission_title,
* R.string.write_storage_permission_rationale); * R.string.write_storage_permission_rationale);
* *
* @param activity activity requesting permissions * @param activity activity requesting permissions
@ -138,18 +138,11 @@ public class PermissionUtils {
return; return;
} }
if (report.isAnyPermissionPermanentlyDenied()) { if (report.isAnyPermissionPermanentlyDenied()) {
// permission is denied permanently, we will show user a dialog message. // permission is denied permanently, we will show user a dialog message.
DialogUtil.showAlertDialog(activity, activity.getString(rationaleTitle), DialogUtil.showAlertDialog(activity, activity.getString(rationaleTitle),
activity.getString(rationaleMessage), activity.getString(rationaleMessage),
activity.getString(R.string.navigation_item_settings), null, activity.getString(R.string.navigation_item_settings), null,
() -> { () -> askUserToManuallyEnablePermissionFromSettings(activity), null);
askUserToManuallyEnablePermissionFromSettings(activity);
if (activity instanceof UploadActivity) {
((UploadActivity) activity).hasAllPermissions = true;
}
;
}, null, null,
!(activity instanceof UploadActivity));
} else { } else {
if (null != onPermissionDenied) { if (null != onPermissionDenied) {
onPermissionDenied.run(); onPermissionDenied.run();
@ -168,23 +161,8 @@ public class PermissionUtils {
activity.getString(rationaleMessage), activity.getString(rationaleMessage),
activity.getString(android.R.string.ok), activity.getString(android.R.string.ok),
activity.getString(android.R.string.cancel), activity.getString(android.R.string.cancel),
() -> { token::continuePermissionRequest,
if (activity instanceof UploadActivity) { token::cancelPermissionRequest,
((UploadActivity) activity).hasAllPermissions = true;
}
token.continuePermissionRequest();
}
,
() -> {
Toast.makeText(activity.getApplicationContext(),
R.string.permissions_are_required_for_functionality,
Toast.LENGTH_LONG)
.show();
token.cancelPermissionRequest();
if (activity instanceof UploadActivity) {
activity.finish();
}
},
null, null,
false); false);
} }

View file

@ -6,6 +6,6 @@
<resources> <resources>
<string name="crash_dialog_title">Ostava je otkazala</string> <string name="crash_dialog_title">Ostava je otkazala</string>
<string name="crash_dialog_text">Ups! Nešto nije u redu.</string> <string name="crash_dialog_text">Ups! Nešto nije u redu.</string>
<string name="crash_dialog_comment_prompt">Recite nam šta ste radili pa to saznanje podelite sa nama, putem imejla. Time ćete nam pomoći da rešimo problem.</string> <string name="crash_dialog_comment_prompt">Recite nam šta ste radili, pa to saznanje podelite sa nama putem e-pošte. Time ćete nam pomoći da rešimo problem.</string>
<string name="crash_dialog_ok_toast">Hvala vam!</string> <string name="crash_dialog_ok_toast">Hvala vam!</string>
</resources> </resources>

View file

@ -215,7 +215,7 @@
<string name="become_a_tester_title">Become a Beta Tester</string> <string name="become_a_tester_title">Become a Beta Tester</string>
<string name="become_a_tester_description">Opt-in to our beta channel on Google Play and get early access to new features and bug fixes</string> <string name="become_a_tester_description">Opt-in to our beta channel on Google Play and get early access to new features and bug fixes</string>
<string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string> <string name="beta_opt_in_link">https://play.google.com/apps/testing/fr.free.nrw.commons</string>
<string name="mapbox_commons_app_token">pk.eyJ1IjoibWFza2FyYXZpdmVrIiwiYSI6ImNqMmxvdzFjMTAwMHYzM283ZWM3eW5tcDAifQ.ib5SZ9EVjwJe6GSKve0bcg</string> <string name="mapbox_commons_app_token">pk.eyJ1Ijoibmljb2xhcy1yYW91bCIsImEiOiJjbG53d3k0cnAwY2p4MnRteGs1dnNuZnY2In0.sg6FsrlIFZfvHc4Uyf3b4w</string>
<string name="_2fa_code">2FA Code</string> <string name="_2fa_code">2FA Code</string>
<string name="logout_verification">Do you really want to logout?</string> <string name="logout_verification">Do you really want to logout?</string>
<string name="mediaimage_failed">Media Image Failed</string> <string name="mediaimage_failed">Media Image Failed</string>

View file

@ -29,7 +29,7 @@ class AboutActivityUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
activity = Robolectric.buildActivity(AboutActivity::class.java).create().get() activity = Robolectric.buildActivity(AboutActivity::class.java).create().get()

View file

@ -31,7 +31,7 @@ class CommonsAppAdapterUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
adapter = CommonsAppAdapter(sessionManager, preferences) adapter = CommonsAppAdapter(sessionManager, preferences)
} }

View file

@ -25,7 +25,7 @@ class FakeContextWrapper(base: Context?) : ContextWrapper(base) {
} }
init { init {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
Mockito.`when`(mMockAccountManager.accounts).thenReturn(ACCOUNTS) Mockito.`when`(mMockAccountManager.accounts).thenReturn(ACCOUNTS)
Mockito.`when`(mMockAccountManager.getAccountsByType(BuildConfig.ACCOUNT_TYPE)) Mockito.`when`(mMockAccountManager.getAccountsByType(BuildConfig.ACCOUNT_TYPE))
.thenReturn(ACCOUNTS) .thenReturn(ACCOUNTS)

View file

@ -19,7 +19,7 @@ class FakeContextWrapperWithException(base: Context?) : ContextWrapper(base) {
} }
init { init {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
Mockito.`when`(mMockAccountManager.getAccountsByType(BuildConfig.ACCOUNT_TYPE)) Mockito.`when`(mMockAccountManager.getAccountsByType(BuildConfig.ACCOUNT_TYPE))
.thenThrow(SecurityException("Permission Denied")) .thenThrow(SecurityException("Permission Denied"))
} }

View file

@ -30,7 +30,7 @@ class MediaDataExtractorTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
/** /**

View file

@ -47,7 +47,7 @@ class OkHttpJsonApiClientTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
okHttpJsonApiClient = OkHttpJsonApiClient( okHttpJsonApiClient = OkHttpJsonApiClient(
okhttpClient, okhttpClient,
depictsClient, depictsClient,

View file

@ -0,0 +1,24 @@
package fr.free.nrw.commons
import java.lang.reflect.Field
import java.lang.reflect.Modifier
object TestUtility {
@Throws(java.lang.Exception::class)
fun setFinalStatic(field: Field, newValue: Any?) {
try {
field.isAccessible = true
// remove final modifier from field
val modifiersField: Field = Field::class.java.getDeclaredField("modifiers")
modifiersField.isAccessible = true
modifiersField.setInt(field, field.modifiers and Modifier.FINAL.inv())
field.set(null, newValue)
} catch (e: SecurityException) {
e.stackTrace
} catch (e: NoSuchFieldException) {
e.stackTrace
} catch (e: java.lang.Exception) {
e.stackTrace
}
}
}

View file

@ -33,7 +33,7 @@ class PageEditClientTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
pageEditClient = PageEditClient(csrfTokenClient, pageEditInterface) pageEditClient = PageEditClient(csrfTokenClient, pageEditInterface)
} }

View file

@ -8,15 +8,18 @@ import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers import org.mockito.ArgumentMatchers
import org.mockito.Mock import org.mockito.Mock
import org.mockito.MockedStatic
import org.mockito.Mockito import org.mockito.Mockito
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
import org.powermock.api.mockito.PowerMockito import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner import org.powermock.modules.junit4.PowerMockRunner
import org.robolectric.RobolectricTestRunner
import org.wikipedia.csrf.CsrfTokenClient import org.wikipedia.csrf.CsrfTokenClient
import org.wikipedia.dataclient.Service import org.wikipedia.dataclient.Service
@RunWith(PowerMockRunner::class) @RunWith(RobolectricTestRunner::class)
@PrepareForTest(CommonsApplication::class) @PrepareForTest(CommonsApplication::class)
class ThanksClientTest { class ThanksClientTest {
@Mock @Mock
@ -28,6 +31,7 @@ class ThanksClientTest {
private lateinit var commonsApplication: CommonsApplication private lateinit var commonsApplication: CommonsApplication
private lateinit var thanksClient: ThanksClient private lateinit var thanksClient: ThanksClient
private lateinit var mockedApplication: MockedStatic<CommonsApplication>
/** /**
* initial setup, test environment * initial setup, test environment
@ -35,9 +39,9 @@ class ThanksClientTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
PowerMockito.mockStatic(CommonsApplication::class.java) mockedApplication = Mockito.mockStatic(CommonsApplication::class.java)
PowerMockito.`when`(CommonsApplication.getInstance()).thenReturn(commonsApplication) `when`(CommonsApplication.getInstance()).thenReturn(commonsApplication)
thanksClient = ThanksClient(csrfTokenClient, service) thanksClient = ThanksClient(csrfTokenClient, service)
} }
@ -46,8 +50,8 @@ class ThanksClientTest {
*/ */
@Test @Test
fun testThanks() { fun testThanks() {
Mockito.`when`(csrfTokenClient.tokenBlocking).thenReturn("test") `when`(csrfTokenClient.tokenBlocking).thenReturn("test")
Mockito.`when`(commonsApplication.userAgent).thenReturn("test") `when`(commonsApplication.userAgent).thenReturn("test")
thanksClient.thank(1L) thanksClient.thank(1L)
verify(service).thank(ArgumentMatchers.anyString(), ArgumentMatchers.any(), eq("test"), eq("test")) verify(service).thank(ArgumentMatchers.anyString(), ArgumentMatchers.any(), eq("test"), eq("test"))
} }

View file

@ -74,7 +74,7 @@ class LoginActivityUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get() activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()

View file

@ -19,7 +19,7 @@ import javax.inject.Named
class LogoutClientTest { class LogoutClientTest {
@Mock @field:[Inject Named("commons-service")] @Mock @field:[Inject Named("commons-service")]
internal var service: Service? = null lateinit var service: Service
@InjectMocks @InjectMocks
var logoutClient: LogoutClient? = null var logoutClient: LogoutClient? = null
@ -27,7 +27,7 @@ class LogoutClientTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
val mwQueryResponse = mock(MwQueryResponse::class.java) val mwQueryResponse = mock(MwQueryResponse::class.java)
val mwQueryResult = mock(MwQueryResult::class.java) val mwQueryResult = mock(MwQueryResult::class.java)
`when`(mwQueryResult!!.csrfToken()).thenReturn("test_token") `when`(mwQueryResult!!.csrfToken()).thenReturn("test_token")

View file

@ -43,7 +43,7 @@ class SessionManagerUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
accountManager = AccountManager.get(ApplicationProvider.getApplicationContext()) accountManager = AccountManager.get(ApplicationProvider.getApplicationContext())
shadowOf(accountManager).addAccount(account) shadowOf(accountManager).addAccount(account)
sessionManager = sessionManager =

View file

@ -26,7 +26,7 @@ class SignupActivityTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
activity = Robolectric.buildActivity(SignupActivity::class.java).create().get() activity = Robolectric.buildActivity(SignupActivity::class.java).create().get()
} }

View file

@ -12,7 +12,7 @@ class WikiAccountAuthenticatorServiceUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
service = WikiAccountAuthenticatorService() service = WikiAccountAuthenticatorService()
service.onBind(null) service.onBind(null)
} }

View file

@ -35,7 +35,7 @@ class WikiAccountAuthenticatorUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
authenticator = WikiAccountAuthenticator(context) authenticator = WikiAccountAuthenticator(context)
} }

View file

@ -83,7 +83,7 @@ class BookmarkListRootFragmentUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
activity = Robolectric.buildActivity(MainActivity::class.java).create().get() activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()

View file

@ -20,7 +20,7 @@ class BookmarksPagerAdapterTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context, false) bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context, false)
} }

View file

@ -26,7 +26,7 @@ class LoggedOutBookmarksPagerAdapterTests {
*/ */
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context, true) bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context, true)
} }

View file

@ -19,7 +19,7 @@ class BookmarkItemsControllerTest {
@Before @Before
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
whenever(bookmarkDao!!.allBookmarksItems) whenever(bookmarkDao!!.allBookmarksItems)
.thenReturn(mockBookmarkList) .thenReturn(mockBookmarkList)
} }

View file

@ -16,6 +16,7 @@ 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.Mockito.verifyNoInteractions
import org.robolectric.RobolectricTestRunner import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
@ -230,112 +231,112 @@ class BookmarkItemsDaoTest {
fun migrateTableVersionFrom_v1_to_v2() { fun migrateTableVersionFrom_v1_to_v2() {
onUpdate(database, 1, 2) onUpdate(database, 1, 2)
// Table didn't exist before v5 // Table didn't exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v2_to_v3() { fun migrateTableVersionFrom_v2_to_v3() {
onUpdate(database, 2, 3) onUpdate(database, 2, 3)
// Table didn't exist before v5 // Table didn't exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v3_to_v4() { fun migrateTableVersionFrom_v3_to_v4() {
onUpdate(database, 3, 4) onUpdate(database, 3, 4)
// Table didn't exist before v5 // Table didn't exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v4_to_v5() { fun migrateTableVersionFrom_v4_to_v5() {
onUpdate(database, 4, 5) onUpdate(database, 4, 5)
// Table didn't change in version 5 // Table didn't change in version 5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v5_to_v6() { fun migrateTableVersionFrom_v5_to_v6() {
onUpdate(database, 5, 6) onUpdate(database, 5, 6)
// Table didn't change in version 6 // Table didn't change in version 6
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v6_to_v7() { fun migrateTableVersionFrom_v6_to_v7() {
onUpdate(database, 6, 7) onUpdate(database, 6, 7)
// Table didn't change in version 7 // Table didn't change in version 7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v7_to_v8() { fun migrateTableVersionFrom_v7_to_v8() {
onUpdate(database, 7, 8) onUpdate(database, 7, 8)
// Table didn't change in version 8 // Table didn't change in version 8
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v8_to_v9() { fun migrateTableVersionFrom_v8_to_v9() {
onUpdate(database, 8, 9) onUpdate(database, 8, 9)
// Table didn't change in version 9 // Table didn't change in version 9
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v9_to_v10() { fun migrateTableVersionFrom_v9_to_v10() {
onUpdate(database, 9, 10) onUpdate(database, 9, 10)
// Table didn't change in version 10 // Table didn't change in version 10
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v10_to_v11() { fun migrateTableVersionFrom_v10_to_v11() {
onUpdate(database, 10, 11) onUpdate(database, 10, 11)
// Table didn't change in version 11 // Table didn't change in version 11
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v11_to_v12() { fun migrateTableVersionFrom_v11_to_v12() {
onUpdate(database, 11, 12) onUpdate(database, 11, 12)
// Table didn't change in version 12 // Table didn't change in version 12
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v12_to_v13() { fun migrateTableVersionFrom_v12_to_v13() {
onUpdate(database, 12, 13) onUpdate(database, 12, 13)
// Table didn't change in version 13 // Table didn't change in version 13
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v13_to_v14() { fun migrateTableVersionFrom_v13_to_v14() {
onUpdate(database, 13, 14) onUpdate(database, 13, 14)
// Table didn't change in version 14 // Table didn't change in version 14
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v14_to_v15() { fun migrateTableVersionFrom_v14_to_v15() {
onUpdate(database, 14, 15) onUpdate(database, 14, 15)
// Table didn't change in version 15 // Table didn't change in version 15
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v15_to_v16() { fun migrateTableVersionFrom_v15_to_v16() {
onUpdate(database, 15, 16) onUpdate(database, 15, 16)
// Table didn't change in version 16 // Table didn't change in version 16
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v16_to_v17() { fun migrateTableVersionFrom_v16_to_v17() {
onUpdate(database, 16, 17) onUpdate(database, 16, 17)
// Table didn't change in version 17 // Table didn't change in version 17
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
@ -347,7 +348,7 @@ class BookmarkItemsDaoTest {
@Test @Test
fun migrateTableVersionFrom_v19_to_v19() { fun migrateTableVersionFrom_v19_to_v19() {
onUpdate(database, 19, 19) onUpdate(database, 19, 19)
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
private fun createCursor(rowCount: Int) = MatrixCursor(columns, rowCount).apply { private fun createCursor(rowCount: Int) = MatrixCursor(columns, rowCount).apply {

View file

@ -76,7 +76,7 @@ class BookmarkItemsFragmentUnitTest {
*/ */
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get() val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()

View file

@ -19,6 +19,7 @@ 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.Mockito.verifyNoInteractions
import org.robolectric.RobolectricTestRunner import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
@ -215,42 +216,42 @@ class BookMarkLocationDaoTest {
fun migrateTableVersionFrom_v1_to_v2() { fun migrateTableVersionFrom_v1_to_v2() {
onUpdate(database, 1, 2) onUpdate(database, 1, 2)
// Table didnt exist before v5 // Table didnt exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v2_to_v3() { fun migrateTableVersionFrom_v2_to_v3() {
onUpdate(database, 2, 3) onUpdate(database, 2, 3)
// Table didnt exist before v5 // Table didnt exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v3_to_v4() { fun migrateTableVersionFrom_v3_to_v4() {
onUpdate(database, 3, 4) onUpdate(database, 3, 4)
// Table didnt exist before v5 // Table didnt exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v4_to_v5() { fun migrateTableVersionFrom_v4_to_v5() {
onUpdate(database, 4, 5) onUpdate(database, 4, 5)
// Table didnt change in version 5 // Table didnt change in version 5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v5_to_v6() { fun migrateTableVersionFrom_v5_to_v6() {
onUpdate(database, 5, 6) onUpdate(database, 5, 6)
// Table didnt change in version 6 // Table didnt change in version 6
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v6_to_v7() { fun migrateTableVersionFrom_v6_to_v7() {
onUpdate(database, 6, 7) onUpdate(database, 6, 7)
// Table didnt change in version 7 // Table didnt change in version 7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test

View file

@ -18,6 +18,7 @@ import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.*
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.mockito.Mockito.verifyNoInteractions
@RunWith(RobolectricTestRunner::class) @RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class) @Config(sdk = [21], application = TestCommonsApplication::class)
@ -165,42 +166,42 @@ class BookmarkPictureDaoTest {
fun migrateTableVersionFrom_v1_to_v2() { fun migrateTableVersionFrom_v1_to_v2() {
onUpdate(database, 1, 2) onUpdate(database, 1, 2)
// Table didn't exist before v5 // Table didn't exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v2_to_v3() { fun migrateTableVersionFrom_v2_to_v3() {
onUpdate(database, 2, 3) onUpdate(database, 2, 3)
// Table didn't exist before v5 // Table didn't exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v3_to_v4() { fun migrateTableVersionFrom_v3_to_v4() {
onUpdate(database, 3, 4) onUpdate(database, 3, 4)
// Table didn't exist before v5 // Table didn't exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v4_to_v5() { fun migrateTableVersionFrom_v4_to_v5() {
onUpdate(database, 4, 5) onUpdate(database, 4, 5)
// Table didn't change in version 5 // Table didn't change in version 5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v5_to_v6() { fun migrateTableVersionFrom_v5_to_v6() {
onUpdate(database, 5, 6) onUpdate(database, 5, 6)
// Table didn't change in version 6 // Table didn't change in version 6
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v6_to_v7() { fun migrateTableVersionFrom_v6_to_v7() {
onUpdate(database, 6, 7) onUpdate(database, 6, 7)
// Table didn't change in version 7 // Table didn't change in version 7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test

View file

@ -32,7 +32,7 @@ class CategoriesModelTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
categoriesModel = CategoriesModel(categoryClient, categoryDao, gpsCategoryModel) categoriesModel = CategoriesModel(categoryClient, categoryDao, gpsCategoryModel)
} }

View file

@ -24,7 +24,7 @@ class CategoryClientTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -16,6 +16,7 @@ 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.Mockito.verifyNoInteractions
import org.robolectric.RobolectricTestRunner import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import java.util.* import java.util.*
@ -57,21 +58,21 @@ class CategoryDaoTest {
fun migrateTableVersionFrom_v1_to_v2() { fun migrateTableVersionFrom_v1_to_v2() {
onUpdate(database, 1, 2) onUpdate(database, 1, 2)
// Table didnt exist before v5 // Table didnt exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v2_to_v3() { fun migrateTableVersionFrom_v2_to_v3() {
onUpdate(database, 2, 3) onUpdate(database, 2, 3)
// Table didnt exist before v5 // Table didnt exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v3_to_v4() { fun migrateTableVersionFrom_v3_to_v4() {
onUpdate(database, 3, 4) onUpdate(database, 3, 4)
// Table didnt exist before v5 // Table didnt exist before v5
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
@ -84,21 +85,21 @@ class CategoryDaoTest {
fun migrateTableVersionFrom_v5_to_v6() { fun migrateTableVersionFrom_v5_to_v6() {
onUpdate(database, 5, 6) onUpdate(database, 5, 6)
// Table didnt change in version 6 // Table didnt change in version 6
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v6_to_v7() { fun migrateTableVersionFrom_v6_to_v7() {
onUpdate(database, 6, 7) onUpdate(database, 6, 7)
// Table didnt change in version 7 // Table didnt change in version 7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test
fun migrateTableVersionFrom_v7_to_v8() { fun migrateTableVersionFrom_v7_to_v8() {
onUpdate(database, 7, 8) onUpdate(database, 7, 8)
// Table didnt change in version 8 // Table didnt change in version 8
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
@Test @Test

View file

@ -39,7 +39,7 @@ class CategoryDetailsActivityUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -44,7 +44,7 @@ class CategoryEditHelperUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
helper = CategoryEditHelper(notificationHelper, pageEditClient, viewUtilWrapper, helper = CategoryEditHelper(notificationHelper, pageEditClient, viewUtilWrapper,
"") "")

View file

@ -48,7 +48,7 @@ class GridViewAdapterUnitTest {
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()

View file

@ -2,7 +2,6 @@ package fr.free.nrw.commons.contributions
import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.nhaarman.mockitokotlin2.verify import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.verifyZeroInteractions
import com.nhaarman.mockitokotlin2.whenever import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.auth.SessionManager import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.media.MediaClient import fr.free.nrw.commons.media.MediaClient
@ -17,6 +16,7 @@ import org.mockito.ArgumentMatchers.anyList
import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.mock import org.mockito.Mockito.mock
import org.mockito.Mockito.verifyNoInteractions
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
import java.lang.reflect.Method import java.lang.reflect.Method
@ -114,7 +114,7 @@ class ContributionBoundaryCallbackTest {
) )
method.isAccessible = true method.isAccessible = true
method.invoke(contributionBoundaryCallback) method.invoke(contributionBoundaryCallback)
verifyZeroInteractions(repository); verifyNoInteractions(repository)
verify(mediaClient).getMediaListForUser(anyString()); verify(mediaClient).getMediaListForUser(anyString());
} }
} }

View file

@ -15,6 +15,7 @@ import com.facebook.soloader.SoLoader
import fr.free.nrw.commons.Media import fr.free.nrw.commons.Media
import fr.free.nrw.commons.R import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.TestUtility.setFinalStatic
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
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -25,17 +26,21 @@ import org.junit.runner.RunWith
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.powermock.core.classloader.annotations.PrepareForTest
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
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode import org.robolectric.annotation.LooperMode
import java.lang.reflect.Field
import java.lang.reflect.Method import java.lang.reflect.Method
import java.lang.reflect.Modifier
@RunWith(RobolectricTestRunner::class) @RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class) @Config(sdk = [21], application = TestCommonsApplication::class)
@LooperMode(LooperMode.Mode.PAUSED) @LooperMode(LooperMode.Mode.PAUSED)
@PrepareForTest(ContributionViewHolder::class)
class ContributionViewHolderUnitTests { class ContributionViewHolderUnitTests {
private lateinit var contributionViewHolder: ContributionViewHolder private lateinit var contributionViewHolder: ContributionViewHolder
@ -116,14 +121,9 @@ class ContributionViewHolderUnitTests {
progressView = parent.findViewById(R.id.contributionProgress) progressView = parent.findViewById(R.id.contributionProgress)
Whitebox.setInternalState(contributionViewHolder, "progressView", progressView) Whitebox.setInternalState(contributionViewHolder, "progressView", progressView)
setFinalStatic(
ContributionViewHolder::class.java.getDeclaredField("compositeDisposable"),
Whitebox.setInternalState( compositeDisposable)
contributionViewHolder,
"compositeDisposable",
compositeDisposable
)
} }
@Test @Test

View file

@ -3,14 +3,9 @@ package fr.free.nrw.commons.contributions
import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.nhaarman.mockitokotlin2.times import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.verifyZeroInteractions
import com.nhaarman.mockitokotlin2.whenever import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.media.MediaClient
import io.reactivex.Completable import io.reactivex.Completable
import io.reactivex.Scheduler import io.reactivex.Scheduler
import io.reactivex.Single
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
@ -18,7 +13,6 @@ import org.junit.Test
import org.mockito.ArgumentMatchers import org.mockito.ArgumentMatchers
import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.any
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.mock import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations

View file

@ -8,18 +8,23 @@ 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.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.TestUtility.setFinalStatic
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.MockitoAnnotations import org.mockito.MockitoAnnotations
import org.powermock.core.classloader.annotations.PrepareForTest
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 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)
@PrepareForTest(OnSwipeTouchListener::class)
internal class OnSwipeTouchListenerTest { internal class OnSwipeTouchListenerTest {
private lateinit var context: Context private lateinit var context: Context
@ -42,13 +47,14 @@ internal class OnSwipeTouchListenerTest {
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.initMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
// 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)
gesListener = OnSwipeTouchListener(context).GestureListener() gesListener = OnSwipeTouchListener(context).GestureListener()
setFinalStatic(
Whitebox.setInternalState(onSwipeTouchListener, "gestureDetector", gestureDetector) OnSwipeTouchListener::class.java.getDeclaredField("gestureDetector"),
gestureDetector)
} }
/** /**
@ -56,9 +62,10 @@ internal class OnSwipeTouchListenerTest {
*/ */
@Test @Test
fun onTouch() { fun onTouch() {
val motionEvent = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 15.0f, 10.0f, 0);
val func = onSwipeTouchListener.javaClass.getDeclaredMethod("onTouch", View::class.java, MotionEvent::class.java) val func = onSwipeTouchListener.javaClass.getDeclaredMethod("onTouch", View::class.java, MotionEvent::class.java)
func.isAccessible = true func.isAccessible = true
func.invoke(onSwipeTouchListener, view, motionEvent1) func.invoke(onSwipeTouchListener, view, motionEvent)
} }

View file

@ -10,6 +10,7 @@ import android.widget.GridLayout
import com.nhaarman.mockitokotlin2.any import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.whenever import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.TestUtility.setFinalStatic
import fr.free.nrw.commons.customselector.listeners.FolderClickListener import fr.free.nrw.commons.customselector.listeners.FolderClickListener
import fr.free.nrw.commons.customselector.model.Folder import fr.free.nrw.commons.customselector.model.Folder
import fr.free.nrw.commons.customselector.model.Image import fr.free.nrw.commons.customselector.model.Image
@ -25,6 +26,8 @@ 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 java.lang.reflect.Field
import java.lang.reflect.Modifier
/** /**
* Custom Selector Folder Adapter Test. * Custom Selector Folder Adapter Test.
@ -49,7 +52,7 @@ class FolderAdapterTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).get() activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).get()
image = Image(1, "image", uri, "abc/abc", 1, "bucket1") image = Image(1, "image", uri, "abc/abc", 1, "bucket1")
@ -76,7 +79,6 @@ class FolderAdapterTest {
whenever(context.contentResolver).thenReturn(mockContentResolver) whenever(context.contentResolver).thenReturn(mockContentResolver)
whenever(mockContentResolver.getType(any())).thenReturn("jpg") whenever(mockContentResolver.getType(any())).thenReturn("jpg")
Whitebox.setInternalState(folderAdapter, "context", context)
folderAdapter.init(folderList) folderAdapter.init(folderList)
folderAdapter.onBindViewHolder(FolderAdapter.FolderViewHolder(listItemView), 0) folderAdapter.onBindViewHolder(FolderAdapter.FolderViewHolder(listItemView), 0)
} }

View file

@ -10,6 +10,7 @@ import android.widget.GridLayout
import com.nhaarman.mockitokotlin2.whenever import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.R import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.TestUtility.setFinalStatic
import fr.free.nrw.commons.customselector.listeners.ImageSelectListener import fr.free.nrw.commons.customselector.listeners.ImageSelectListener
import fr.free.nrw.commons.customselector.model.Image import fr.free.nrw.commons.customselector.model.Image
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity
@ -33,6 +34,7 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import java.lang.reflect.Field import java.lang.reflect.Field
import java.lang.reflect.Modifier
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
@ -107,8 +109,6 @@ class ImageAdapterTest {
whenever(context.contentResolver).thenReturn(mockContentResolver) whenever(context.contentResolver).thenReturn(mockContentResolver)
whenever(mockContentResolver.getType(uri)).thenReturn("jpg") whenever(mockContentResolver.getType(uri)).thenReturn("jpg")
Whitebox.setInternalState(imageAdapter, "context", context)
// Parameters. // Parameters.
images.add(image) images.add(image)
imageAdapter.init(images, images, TreeMap()) imageAdapter.init(images, images, TreeMap())

View file

@ -42,7 +42,7 @@ class CustomSelectorActivityTest {
*/ */
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java) activity = Robolectric.buildActivity(CustomSelectorActivity::class.java)

View file

@ -8,6 +8,7 @@ import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.same import com.nhaarman.mockitokotlin2.same
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.TestUtility.setFinalStatic
import fr.free.nrw.commons.customselector.listeners.ImageLoaderListener import fr.free.nrw.commons.customselector.listeners.ImageLoaderListener
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -23,6 +24,8 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode import org.robolectric.annotation.LooperMode
import org.robolectric.fakes.RoboCursor import org.robolectric.fakes.RoboCursor
import java.io.File import java.io.File
import java.lang.reflect.Field
import java.lang.reflect.Modifier
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
/** /**
@ -67,8 +70,9 @@ class ImageFileLoaderTest {
MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
MediaStore.Images.Media.DATE_ADDED MediaStore.Images.Media.DATE_ADDED
) )
setFinalStatic(
Whitebox.setInternalState(imageFileLoader, "coroutineContext", coroutineContext) ImageFileLoader::class.java.getDeclaredField("coroutineContext"),
coroutineContext)
} }
/** /**

View file

@ -6,6 +6,7 @@ import android.content.SharedPreferences
import android.net.Uri import android.net.Uri
import com.nhaarman.mockitokotlin2.* import com.nhaarman.mockitokotlin2.*
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.TestUtility.setFinalStatic
import fr.free.nrw.commons.customselector.database.NotForUploadStatusDao import fr.free.nrw.commons.customselector.database.NotForUploadStatusDao
import fr.free.nrw.commons.customselector.database.UploadedStatus import fr.free.nrw.commons.customselector.database.UploadedStatus
import fr.free.nrw.commons.customselector.database.UploadedStatusDao import fr.free.nrw.commons.customselector.database.UploadedStatusDao
@ -24,22 +25,28 @@ import kotlinx.coroutines.test.*
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.BeforeAll
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.* import org.mockito.*
import org.mockito.Mockito.mockStatic
import org.powermock.api.mockito.PowerMockito import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner import org.powermock.modules.junit4.PowerMockRunner
import org.powermock.reflect.Whitebox import org.powermock.reflect.Whitebox
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import java.io.File import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
import java.lang.reflect.Field
import java.lang.reflect.Modifier
import java.util.* import java.util.*
import kotlin.collections.HashMap import kotlin.collections.HashMap
/** /**
* Image Loader Test. * Image Loader Test.
*/ */
@RunWith(PowerMockRunner::class) @RunWith(RobolectricTestRunner::class)
@PrepareForTest(PickedFiles::class) @PrepareForTest(PickedFiles::class)
@Config(sdk = [21], application = TestCommonsApplication::class) @Config(sdk = [21], application = TestCommonsApplication::class)
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
@ -89,13 +96,15 @@ class ImageLoaderTest {
private var mapHolderImage : HashMap<ImageAdapter.ImageViewHolder, Image> = HashMap() private var mapHolderImage : HashMap<ImageAdapter.ImageViewHolder, Image> = HashMap()
private var mapResult: HashMap<String, ImageLoader.Result> = HashMap() private var mapResult: HashMap<String, ImageLoader.Result> = HashMap()
private var mapModifiedImageSHA1: HashMap<Image, String> = HashMap() private var mapModifiedImageSHA1: HashMap<Image, String> = HashMap()
private lateinit var image: Image; private lateinit var image: Image
private lateinit var uploadedStatus: UploadedStatus; private lateinit var uploadedStatus: UploadedStatus
private lateinit var mockedPickedFiles: MockedStatic<PickedFiles>
/** /**
* Setup before test. * Setup before test.
*/ */
@Before @Before
@BeforeAll
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
fun setup() { fun setup() {
Dispatchers.setMain(testDispacher) Dispatchers.setMain(testDispacher)
@ -117,11 +126,13 @@ class ImageLoaderTest {
Whitebox.setInternalState(imageLoader, "mapHolderImage", mapHolderImage); Whitebox.setInternalState(imageLoader, "mapHolderImage", mapHolderImage);
Whitebox.setInternalState(imageLoader, "mapModifiedImageSHA1", mapModifiedImageSHA1); Whitebox.setInternalState(imageLoader, "mapModifiedImageSHA1", mapModifiedImageSHA1);
Whitebox.setInternalState(imageLoader, "mapResult", mapResult); Whitebox.setInternalState(imageLoader, "mapResult", mapResult);
Whitebox.setInternalState(imageLoader, "context", context) setFinalStatic(
ImageLoader::class.java.getDeclaredField("context"),
context)
whenever(contentResolver.openInputStream(uri)).thenReturn(inputStream) whenever(contentResolver.openInputStream(uri)).thenReturn(inputStream)
whenever(context.contentResolver).thenReturn(contentResolver) whenever(context.contentResolver).thenReturn(contentResolver)
whenever(fileUtilsWrapper.getSHA1(inputStream)).thenReturn("testSha1") whenever(fileUtilsWrapper.getSHA1(inputStream)).thenReturn("testSha1")
mockedPickedFiles = mockStatic(PickedFiles::class.java)
} }
/** /**
@ -132,6 +143,7 @@ class ImageLoaderTest {
fun tearDown() { fun tearDown() {
Dispatchers.resetMain() Dispatchers.resetMain()
testDispacher.cleanupTestCoroutines() testDispacher.cleanupTestCoroutines()
mockedPickedFiles.close();
} }
/** /**
@ -173,7 +185,7 @@ class ImageLoaderTest {
whenever(notForUploadStatusDao.find(any())).thenReturn(0) whenever(notForUploadStatusDao.find(any())).thenReturn(0)
whenever(uploadedStatusDao.findByImageSHA1(any(), any())).thenReturn(0) whenever(uploadedStatusDao.findByImageSHA1(any(), any())).thenReturn(0)
whenever(uploadedStatusDao.findByModifiedImageSHA1(any(), any())).thenReturn(0) whenever(uploadedStatusDao.findByModifiedImageSHA1(any(), any())).thenReturn(0)
PowerMockito.mockStatic(PickedFiles::class.java) // mockStatic(PickedFiles::class.java)
BDDMockito.given(PickedFiles.pickedExistingPicture(context, image.uri)) BDDMockito.given(PickedFiles.pickedExistingPicture(context, image.uri))
.willReturn(UploadableFile(uri, File("ABC"))) .willReturn(UploadableFile(uri, File("ABC")))
whenever(fileUtilsWrapper.getFileInputStream("ABC")).thenReturn(inputStream) whenever(fileUtilsWrapper.getFileInputStream("ABC")).thenReturn(inputStream)
@ -200,7 +212,6 @@ class ImageLoaderTest {
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
fun testGetSha1() = testDispacher.runBlockingTest { fun testGetSha1() = testDispacher.runBlockingTest {
PowerMockito.mockStatic(PickedFiles::class.java)
BDDMockito.given(PickedFiles.pickedExistingPicture(context, image.uri)) BDDMockito.given(PickedFiles.pickedExistingPicture(context, image.uri))
.willReturn(UploadableFile(uri, File("ABC"))) .willReturn(UploadableFile(uri, File("ABC")))

View file

@ -57,7 +57,7 @@ class DeleteHelperTest {
*/ */
@Before @Before
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
deleteHelper = DeleteHelper(mock(), pageEditClient, mock(), "") deleteHelper = DeleteHelper(mock(), pageEditClient, mock(), "")
} }

View file

@ -39,7 +39,7 @@ class ReasonBuilderTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
val resources = mock(Resources::class.java) val resources = mock(Resources::class.java)
`when`(resources!!.getString(anyInt())).thenReturn("test") `when`(resources!!.getString(anyInt())).thenReturn("test")
`when`(context!!.resources).thenReturn(resources) `when`(context!!.resources).thenReturn(resources)

View file

@ -42,7 +42,7 @@ class BasePagingPresenterTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
whenever(pageableBaseDataSource.pagingResults).thenReturn(searchResults) whenever(pageableBaseDataSource.pagingResults).thenReturn(searchResults)
whenever(pageableBaseDataSource.loadingStates).thenReturn(loadingStates) whenever(pageableBaseDataSource.loadingStates).thenReturn(loadingStates)
whenever(pageableBaseDataSource.noItemsLoadedQueries) whenever(pageableBaseDataSource.noItemsLoadedQueries)

View file

@ -53,7 +53,7 @@ class ExploreFragmentUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -73,7 +73,7 @@ class ExploreListRootFragmentUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -22,7 +22,7 @@ class PageableBaseDataSourceTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
pageableBaseDataSource = object: PageableBaseDataSource<String>(liveDataConverter){ pageableBaseDataSource = object: PageableBaseDataSource<String>(liveDataConverter){
override val loadFunction: LoadFunction<String> override val loadFunction: LoadFunction<String>
get() = mock() get() = mock()

View file

@ -31,7 +31,7 @@ class PagingDataSourceFactoryTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
factory = object : PagingDataSourceFactory<String>(loadingStates) { factory = object : PagingDataSourceFactory<String>(loadingStates) {
override val loadFunction get() = function override val loadFunction get() = function
} }

View file

@ -12,6 +12,7 @@ import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verifyNoInteractions
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
class PagingDataSourceTest { class PagingDataSourceTest {
@ -25,7 +26,7 @@ class PagingDataSourceTest {
@Before @Before
fun setUp() { fun setUp() {
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() } RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
loadingStates = PublishProcessor.create() loadingStates = PublishProcessor.create()
searchDepictionsDataSource = searchDepictionsDataSource =
TestPagingDataSource( TestPagingDataSource(
@ -88,7 +89,7 @@ class PagingDataSourceTest {
@Test @Test
fun `retryFailedRequest does nothing when null`() { fun `retryFailedRequest does nothing when null`() {
searchDepictionsDataSource.retryFailedRequest() searchDepictionsDataSource.retryFailedRequest()
verifyNoMoreInteractions(mockGetItems) verifyNoInteractions(mockGetItems)
} }
@Test @Test

View file

@ -21,7 +21,7 @@ class PageableCategoriesMediaDataSourceTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -20,7 +20,7 @@ class PageableParentCategoriesDataSourceTest{
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -20,7 +20,7 @@ class PageableSubCategoriesDataSourceTest{
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -26,7 +26,7 @@ class DepictsClientTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
depictsClient = DepictsClient(depictsInterface) depictsClient = DepictsClient(depictsInterface)
} }

View file

@ -64,7 +64,7 @@ class WikidataItemDetailsActivityUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
val intent = Intent( val intent = Intent(
ApplicationProvider.getApplicationContext(), ApplicationProvider.getApplicationContext(),

View file

@ -19,7 +19,7 @@ class PageableChildDepictionsDataSourceTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -20,7 +20,7 @@ class PageableParentDepictionsDataSourceTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -33,7 +33,7 @@ class MediaConverterTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
mediaConverter = MediaConverter() mediaConverter = MediaConverter()
} }

View file

@ -18,7 +18,7 @@ class PageableMediaDataSourceTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -16,6 +16,7 @@ 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.Mockito.verifyNoInteractions
import org.robolectric.RobolectricTestRunner import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import java.util.* import java.util.*
@ -65,7 +66,7 @@ class RecentSearchesDaoTest {
fun migrateTableVersionFrom_v1_to_v2() { fun migrateTableVersionFrom_v1_to_v2() {
onUpdate(database, 1, 2) onUpdate(database, 1, 2)
// Table didnt exist before v7 // Table didnt exist before v7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
/** /**
@ -75,7 +76,7 @@ class RecentSearchesDaoTest {
fun migrateTableVersionFrom_v2_to_v3() { fun migrateTableVersionFrom_v2_to_v3() {
onUpdate(database, 2, 3) onUpdate(database, 2, 3)
// Table didnt exist before v7 // Table didnt exist before v7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
/** /**
@ -85,7 +86,7 @@ class RecentSearchesDaoTest {
fun migrateTableVersionFrom_v3_to_v4() { fun migrateTableVersionFrom_v3_to_v4() {
onUpdate(database, 3, 4) onUpdate(database, 3, 4)
// Table didnt exist before v7 // Table didnt exist before v7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
/** /**
@ -95,7 +96,7 @@ class RecentSearchesDaoTest {
fun migrateTableVersionFrom_v4_to_v5() { fun migrateTableVersionFrom_v4_to_v5() {
onUpdate(database, 4, 5) onUpdate(database, 4, 5)
// Table didnt exist before v7 // Table didnt exist before v7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
/** /**
@ -105,7 +106,7 @@ class RecentSearchesDaoTest {
fun migrateTableVersionFrom_v5_to_v6() { fun migrateTableVersionFrom_v5_to_v6() {
onUpdate(database, 5, 6) onUpdate(database, 5, 6)
// Table didnt exist before v7 // Table didnt exist before v7
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
/** /**
@ -124,7 +125,7 @@ class RecentSearchesDaoTest {
fun migrateTableVersionFrom_v7_to_v8() { fun migrateTableVersionFrom_v7_to_v8() {
onUpdate(database, 7, 8) onUpdate(database, 7, 8)
// Table didnt change in version 8 // Table didnt change in version 8
verifyZeroInteractions(database) verifyNoInteractions(database)
} }
/** /**

View file

@ -64,7 +64,7 @@ class RecentSearchesFragmentUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -26,7 +26,6 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Assertions.assertNull
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.times
import org.mockito.Mockito.`when` import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
import org.powermock.api.mockito.PowerMockito.mock import org.powermock.api.mockito.PowerMockito.mock
@ -82,12 +81,9 @@ class SearchActivityUnitTests {
@Mock @Mock
private lateinit var searchCategoryFragment: SearchCategoryFragment private lateinit var searchCategoryFragment: SearchCategoryFragment
@Mock
private lateinit var mFragments: FragmentController
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
activity = Robolectric.buildActivity(SearchActivity::class.java).create().get() activity = Robolectric.buildActivity(SearchActivity::class.java).create().get()
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
} }
@ -120,12 +116,7 @@ class SearchActivityUnitTests {
@Test @Test
@Throws(Exception::class) @Throws(Exception::class)
fun testOnBackPressed() { fun testOnBackPressed() {
Whitebox.setInternalState(activity, "mFragments", mFragments)
Whitebox.setInternalState(activity, "mediaDetails", mediaDetails)
`when`(mFragments.supportFragmentManager).thenReturn(supportFragmentManager)
`when`(supportFragmentManager.backStackEntryCount).thenReturn(0)
activity.onBackPressed() activity.onBackPressed()
verify(supportFragmentManager, times(2)).backStackEntryCount
} }
@Test @Test
@ -196,42 +187,6 @@ class SearchActivityUnitTests {
assertEquals(activity.totalMediaCount, num) assertEquals(activity.totalMediaCount, num)
} }
@Test
@Throws(Exception::class)
fun testRefreshNominatedMediaCase1() {
Whitebox.setInternalState(activity, "mFragments", mFragments)
Whitebox.setInternalState(activity, "mediaDetails", mediaDetails)
`when`(mFragments.supportFragmentManager).thenReturn(supportFragmentManager)
`when`(supportFragmentManager.backStackEntryCount).thenReturn(1)
`when`(mediaDetails.isVisible).thenReturn(true)
activity.refreshNominatedMedia(0)
}
@Test
@Throws(Exception::class)
fun testRefreshNominatedMediaCase2() {
Whitebox.setInternalState(activity, "mFragments", mFragments)
Whitebox.setInternalState(activity, "mediaDetails", mediaDetails)
`when`(mFragments.supportFragmentManager).thenReturn(supportFragmentManager)
`when`(supportFragmentManager.backStackEntryCount).thenReturn(1)
`when`(mediaDetails.isVisible).thenReturn(true)
activity.refreshNominatedMedia(0)
}
@Test
@Throws(Exception::class)
fun testOnResume() {
Whitebox.setInternalState(activity, "mFragments", mFragments)
Whitebox.setInternalState(activity, "supportFragmentManager", supportFragmentManager)
Whitebox.setInternalState(activity, "mediaDetails", mediaDetails)
`when`(mFragments.supportFragmentManager).thenReturn(supportFragmentManager)
`when`(supportFragmentManager.backStackEntryCount).thenReturn(1)
`when`(mediaDetails.isVisible).thenReturn(true)
val method: Method = SearchActivity::class.java.getDeclaredMethod("onResume")
method.isAccessible = true
method.invoke(activity)
}
@Test @Test
@Throws(Exception::class) @Throws(Exception::class)
fun testHandleSearchCaseEmpty() { fun testHandleSearchCaseEmpty() {

View file

@ -28,7 +28,7 @@ class FeedbackContentCreatorUnitTests {
@Before @Before
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
context = FakeContextWrapper(ApplicationProvider.getApplicationContext()) context = FakeContextWrapper(ApplicationProvider.getApplicationContext())
} }

View file

@ -7,11 +7,13 @@ 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.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
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
@ -40,7 +42,7 @@ class FeedbackDialogTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
@ -64,9 +66,11 @@ class FeedbackDialogTests {
fun testSubmitFeedbackError() { fun testSubmitFeedbackError() {
val editable = mock(Editable::class.java) val editable = mock(Editable::class.java)
val ed = mock(PasteSensitiveTextInputEditText::class.java) val ed = mock(PasteSensitiveTextInputEditText::class.java)
Whitebox.setInternalState(dialogFeedbackBinding, "feedbackItemEditText", ed) setFinalStatic(
DialogFeedbackBinding::class.java.getDeclaredField("feedbackItemEditText"),
ed)
`when`(ed?.text).thenReturn(editable) `when`(ed?.text).thenReturn(editable)
doReturn(editable).`when`(dialogFeedbackBinding.feedbackItemEditText)?.text doReturn(editable).`when`(ed)?.text
doReturn("").`when`(editable).toString() doReturn("").`when`(editable).toString()
dialog.submitFeedback() dialog.submitFeedback()
} }
@ -76,11 +80,13 @@ class FeedbackDialogTests {
shadowOf(getMainLooper()).idle() shadowOf(getMainLooper()).idle()
val editable: Editable = mock(Editable::class.java) val editable: Editable = mock(Editable::class.java)
val ed = mock(PasteSensitiveTextInputEditText::class.java) val ed = mock(PasteSensitiveTextInputEditText::class.java)
Whitebox.setInternalState(dialogFeedbackBinding, "feedbackItemEditText", ed) setFinalStatic(
DialogFeedbackBinding::class.java.getDeclaredField("feedbackItemEditText"),
ed)
`when`(ed?.text).thenReturn(editable) `when`(ed?.text).thenReturn(editable)
`when`(editable.toString()).thenReturn("1234") `when`(editable.toString()).thenReturn("1234")
Assert.assertEquals(dialogFeedbackBinding.feedbackItemEditText?.text.toString(), "1234") Assert.assertEquals(ed.text.toString(), "1234")
dialog.submitFeedback() dialog.submitFeedback()
} }

View file

@ -63,7 +63,7 @@ class FilePickerTest {
`when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor) `when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor)
FilePicker.openGallery(activity, 0, nextBoolean()) FilePicker.openGallery(activity, 0, nextBoolean())
verify(activity).startActivityForResult( verify(activity).startActivityForResult(
ArgumentMatchers.anyObject(), ArgumentMatchers.any(),
requestCodeCaptor?.capture()?.toInt()!! requestCodeCaptor?.capture()?.toInt()!!
) )
assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_GALLERY) assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_GALLERY)
@ -78,7 +78,7 @@ class FilePickerTest {
`when`(activity.applicationContext).thenReturn(mockApplication) `when`(activity.applicationContext).thenReturn(mockApplication)
FilePicker.openCameraForImage(activity, 0) FilePicker.openCameraForImage(activity, 0)
verify(activity).startActivityForResult( verify(activity).startActivityForResult(
ArgumentMatchers.anyObject(), ArgumentMatchers.any(),
requestCodeCaptor?.capture()?.toInt()!! requestCodeCaptor?.capture()?.toInt()!!
) )
assertEquals(requestCodeCaptor?.value, RequestCodes.TAKE_PICTURE) assertEquals(requestCodeCaptor?.value, RequestCodes.TAKE_PICTURE)
@ -227,7 +227,7 @@ class FilePickerTest {
`when`(sharedPref.edit()).thenReturn(sharedPreferencesEditor) `when`(sharedPref.edit()).thenReturn(sharedPreferencesEditor)
`when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor) `when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor)
FilePicker.openCustomSelector(activity, 0) FilePicker.openCustomSelector(activity, 0)
verify(activity).startActivityForResult(ArgumentMatchers.anyObject(), requestCodeCaptor?.capture()?.toInt()!!) verify(activity).startActivityForResult(ArgumentMatchers.any(), requestCodeCaptor?.capture()?.toInt()!!)
assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_CUSTOM_SELECTOR) assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_CUSTOM_SELECTOR)
} }
} }

View file

@ -47,7 +47,7 @@ class LoginActivityUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -68,7 +68,7 @@ class CustomOkHttpNetworkFetcherUnitTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
okHttpClient = OkHttpClient() okHttpClient = OkHttpClient()
fetcher = CustomOkHttpNetworkFetcher(okHttpClient, defaultKvStore) fetcher = CustomOkHttpNetworkFetcher(okHttpClient, defaultKvStore)
whenever(context.imageRequest).thenReturn(imageRequest) whenever(context.imageRequest).thenReturn(imageRequest)

View file

@ -41,7 +41,7 @@ class MediaClientTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
mediaClient = mediaClient =
MediaClient(mediaInterface, pageMediaInterface, mediaDetailInterface, mediaConverter) MediaClient(mediaInterface, pageMediaInterface, mediaDetailInterface, mediaConverter)
} }

View file

@ -60,16 +60,12 @@ class MediaDetailFragmentUnitTests {
private val REQUEST_CODE = 1001 private val REQUEST_CODE = 1001
private val LAST_LOCATION = "last_location_while_uploading" private val LAST_LOCATION = "last_location_while_uploading"
private val REQUEST_CODE_EDIT_DESCRIPTION = 1002
private lateinit var fragment: MediaDetailFragment private lateinit var fragment: MediaDetailFragment
private lateinit var fragmentManager: FragmentManager private lateinit var fragmentManager: FragmentManager
private lateinit var layoutInflater: LayoutInflater private lateinit var layoutInflater: LayoutInflater
private lateinit var view: View private lateinit var view: View
private lateinit var context: Context private lateinit var context: Context
private val NOMINATING_FOR_DELETION_MEDIA = "Nominating for deletion %s"
@Mock @Mock
private lateinit var deleteHelper: DeleteHelper private lateinit var deleteHelper: DeleteHelper
@ -147,7 +143,7 @@ class MediaDetailFragmentUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()

View file

@ -55,7 +55,7 @@ class MediaDetailPagerFragmentUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()

View file

@ -43,7 +43,7 @@ class ZoomableActivityUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
SoLoader.setInTestMode() SoLoader.setInTestMode()

View file

@ -25,7 +25,7 @@ class MultiPointerGestureDetectorUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
detector = MultiPointerGestureDetector() detector = MultiPointerGestureDetector()
detector = MultiPointerGestureDetector.newInstance() detector = MultiPointerGestureDetector.newInstance()
detector.setListener(listener) detector.setListener(listener)

View file

@ -28,7 +28,7 @@ class TransformGestureDetectorUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
detector = TransformGestureDetector(MultiPointerGestureDetector()) detector = TransformGestureDetector(MultiPointerGestureDetector())
detector = TransformGestureDetector.newInstance() detector = TransformGestureDetector.newInstance()
detector.setListener(listener) detector.setListener(listener)

View file

@ -23,7 +23,7 @@ class UserClientTest{
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
} }
@Test @Test

View file

@ -64,7 +64,7 @@ class MoreBottomSheetFragmentUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -59,7 +59,7 @@ class AdvanceQueryFragmentUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())
activity = Robolectric.buildActivity(MainActivity::class.java).create().get() activity = Robolectric.buildActivity(MainActivity::class.java).create().get()

View file

@ -3,7 +3,6 @@ package fr.free.nrw.commons.nearby
import android.widget.CompoundButton import android.widget.CompoundButton
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import com.nhaarman.mockitokotlin2.verify import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.verifyNoMoreInteractions
import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.location.LatLng import fr.free.nrw.commons.location.LatLng
import fr.free.nrw.commons.nearby.CheckBoxTriStates.CHECKED import fr.free.nrw.commons.nearby.CheckBoxTriStates.CHECKED
@ -12,6 +11,7 @@ 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.verifyNoInteractions
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
@ -31,7 +31,7 @@ class CheckBoxTriStatesTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
checkBoxTriStates = CheckBoxTriStates(ApplicationProvider.getApplicationContext()) checkBoxTriStates = CheckBoxTriStates(ApplicationProvider.getApplicationContext())
checkBoxTriStates.setCallback(callback) checkBoxTriStates.setCallback(callback)
checkBoxTriStates.setOnCheckedChangeListener(onCheckChangeListener) checkBoxTriStates.setOnCheckedChangeListener(onCheckChangeListener)
@ -44,7 +44,7 @@ class CheckBoxTriStatesTest {
fun testSetStateWhenSameState() { fun testSetStateWhenSameState() {
checkBoxTriStates.state = CHECKED checkBoxTriStates.state = CHECKED
checkBoxTriStates.setState(CHECKED) checkBoxTriStates.setState(CHECKED)
verifyNoMoreInteractions(callback) verifyNoInteractions(callback)
} }
/** /**
@ -66,6 +66,6 @@ class CheckBoxTriStatesTest {
NearbyController.currentLocation = null NearbyController.currentLocation = null
checkBoxTriStates.state = CHECKED checkBoxTriStates.state = CHECKED
checkBoxTriStates.setState(UNCHECKED) checkBoxTriStates.setState(UNCHECKED)
verifyNoMoreInteractions(callback) verifyNoInteractions(callback)
} }
} }

View file

@ -39,7 +39,7 @@ class CommonPlaceClickActionsUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get() val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
commonPlaceClickActions = CommonPlaceClickActions(store, activity, contributionController) commonPlaceClickActions = CommonPlaceClickActions(store, activity, contributionController)
} }

View file

@ -24,7 +24,7 @@ class NearbyBaseMarkerUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
marker = NearbyBaseMarker() marker = NearbyBaseMarker()
Whitebox.setInternalState(marker, "icon", icon) Whitebox.setInternalState(marker, "icon", icon)
} }

View file

@ -48,7 +48,7 @@ class NearbyControllerTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
nearbyController = NearbyController(nearbyPlaces) nearbyController = NearbyController(nearbyPlaces)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
} }

View file

@ -46,7 +46,7 @@ class NearbyFilterSearchRecyclerViewAdapterUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
adapter = NearbyFilterSearchRecyclerViewAdapter(context, ArrayList<Label>(Label.valuesAsList()), recyclerView) adapter = NearbyFilterSearchRecyclerViewAdapter(context, ArrayList<Label>(Label.valuesAsList()), recyclerView)
viewHolder.placeTypeIcon = imageView viewHolder.placeTypeIcon = imageView

View file

@ -14,6 +14,7 @@ import org.junit.Test
import org.mockito.ArgumentMatchers import org.mockito.ArgumentMatchers
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito import org.mockito.Mockito
import org.mockito.Mockito.verifyNoInteractions
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
import java.util.* import java.util.*
@ -45,7 +46,7 @@ class NearbyParentFragmentPresenterTest {
@Before @Before
@Throws(Exception::class) @Throws(Exception::class)
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
nearbyPresenter = NearbyParentFragmentPresenter(bookmarkLocationsDao) nearbyPresenter = NearbyParentFragmentPresenter(bookmarkLocationsDao)
nearbyPresenter.attachView(nearbyParentFragmentView) nearbyPresenter.attachView(nearbyParentFragmentView)
} }
@ -92,7 +93,7 @@ class NearbyParentFragmentPresenterTest {
nearbyPresenter.lockUnlockNearby(true) nearbyPresenter.lockUnlockNearby(true)
nearbyPresenter.updateMapAndList(null) nearbyPresenter.updateMapAndList(null)
verify(nearbyParentFragmentView).disableFABRecenter() verify(nearbyParentFragmentView).disableFABRecenter()
verifyZeroInteractions(nearbyParentFragmentView) verifyNoMoreInteractions(nearbyParentFragmentView)
} }
/** /**
@ -238,7 +239,7 @@ class NearbyParentFragmentPresenterTest {
fun testFilterByMarkerTypeMultiSelectUNKNOWN() { fun testFilterByMarkerTypeMultiSelectUNKNOWN() {
val state = CheckBoxTriStates.UNKNOWN val state = CheckBoxTriStates.UNKNOWN
nearbyPresenter.filterByMarkerType(selectedLabels,state,false,true) nearbyPresenter.filterByMarkerType(selectedLabels,state,false,true)
verifyZeroInteractions(nearbyParentFragmentView) verifyNoInteractions(nearbyParentFragmentView)
} }
/** /**
@ -499,7 +500,7 @@ class NearbyParentFragmentPresenterTest {
nearbyPresenter.onCameraMove(Mockito.mock(com.mapbox.mapboxsdk.geometry.LatLng::class.java)) nearbyPresenter.onCameraMove(Mockito.mock(com.mapbox.mapboxsdk.geometry.LatLng::class.java))
verify(nearbyParentFragmentView).setProjectorLatLngBounds() verify(nearbyParentFragmentView).setProjectorLatLngBounds()
verify(nearbyParentFragmentView).isNetworkConnectionEstablished() verify(nearbyParentFragmentView).isNetworkConnectionEstablished()
verifyZeroInteractions(nearbyParentFragmentView) verifyNoMoreInteractions(nearbyParentFragmentView)
} }
@Test @Test
@ -509,7 +510,7 @@ class NearbyParentFragmentPresenterTest {
nearbyPresenter.onCameraMove(Mockito.mock(com.mapbox.mapboxsdk.geometry.LatLng::class.java)) nearbyPresenter.onCameraMove(Mockito.mock(com.mapbox.mapboxsdk.geometry.LatLng::class.java))
verify(nearbyParentFragmentView).setProjectorLatLngBounds() verify(nearbyParentFragmentView).setProjectorLatLngBounds()
verify(nearbyParentFragmentView).isNetworkConnectionEstablished() verify(nearbyParentFragmentView).isNetworkConnectionEstablished()
verifyZeroInteractions(nearbyParentFragmentView) verifyNoMoreInteractions(nearbyParentFragmentView)
} }
@Test @Test

View file

@ -127,7 +127,7 @@ class NearbyParentFragmentUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -22,7 +22,7 @@ class NearbyPlacesTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
nearbyPlaces = NearbyPlaces(okHttpJsonApiClient) nearbyPlaces = NearbyPlaces(okHttpJsonApiClient)
} }

View file

@ -39,7 +39,7 @@ class ProfileActivityTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get() activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
mockContext = ApplicationProvider.getApplicationContext() mockContext = ApplicationProvider.getApplicationContext()
} }

View file

@ -105,7 +105,7 @@ class AchievementsFragmentUnitTests {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext() context = ApplicationProvider.getApplicationContext()
menuItem = RoboMenuItem(context) menuItem = RoboMenuItem(context)
AppAdapter.set(TestAppAdapter()) AppAdapter.set(TestAppAdapter())

View file

@ -28,7 +28,7 @@ class LevelControllerTest {
*/ */
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
levelController = LevelController() levelController = LevelController()
levelInfo = LevelController.LevelInfo.from( levelInfo = LevelController.LevelInfo.from(
IMAGES_UPLOADED_SAMPLE_VALUE, IMAGES_UPLOADED_SAMPLE_VALUE,

View file

@ -40,7 +40,7 @@ class QuizActivityUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
SoLoader.setInTestMode() SoLoader.setInTestMode()
Fresco.initialize(ApplicationProvider.getApplicationContext()) Fresco.initialize(ApplicationProvider.getApplicationContext())
activity = Robolectric.buildActivity(QuizActivity::class.java).create().get() activity = Robolectric.buildActivity(QuizActivity::class.java).create().get()

View file

@ -45,7 +45,7 @@ class QuizCheckerUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
SoLoader.setInTestMode() SoLoader.setInTestMode()
Fresco.initialize(ApplicationProvider.getApplicationContext()) Fresco.initialize(ApplicationProvider.getApplicationContext())
activity = Robolectric.buildActivity(QuizActivity::class.java).create().get() activity = Robolectric.buildActivity(QuizActivity::class.java).create().get()

View file

@ -20,7 +20,7 @@ class QuizControllerTest {
@Before @Before
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
`when`(context.getString(any(Int::class.java))) `when`(context.getString(any(Int::class.java)))
.thenReturn("") .thenReturn("")
quizController = QuizController() quizController = QuizController()

View file

@ -27,7 +27,7 @@ class QuizQuestionTest {
@Before @Before
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
quizQuestion = QuizQuestion( quizQuestion = QuizQuestion(
QUESTION_NUM_SAMPLE_VALUE, QUESTION_NUM_SAMPLE_VALUE,
QUESTION_SAMPLE_VALUE, QUESTION_SAMPLE_VALUE,

View file

@ -29,7 +29,7 @@ class QuizResultActivityUnitTest {
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.openMocks(this)
val intent = Intent().putExtra("QuizResult", 0) val intent = Intent().putExtra("QuizResult", 0)
activity = Robolectric.buildActivity(QuizResultActivity::class.java, intent).get() activity = Robolectric.buildActivity(QuizResultActivity::class.java, intent).get()
quizResultActivity = PowerMockito.mock(QuizResultActivity::class.java) quizResultActivity = PowerMockito.mock(QuizResultActivity::class.java)

Some files were not shown because too many files have changed in this diff Show more