From 57aab1927ad1876ad3a093cac55e0cfa52cc6a76 Mon Sep 17 00:00:00 2001 From: Madhur Gupta <30932899+madhurgupta10@users.noreply.github.com> Date: Tue, 12 Jan 2021 06:00:04 +0530 Subject: [PATCH] Add Achievements Fragment Tests (#4162) --- .../fr/free/nrw/commons/TestAppAdapter.java | 71 +++++++++++ .../AchievementsFragmentUnitTests.kt | 120 ++++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 app/src/test/kotlin/fr/free/nrw/commons/TestAppAdapter.java create mode 100644 app/src/test/kotlin/fr/free/nrw/commons/profile/achievements/AchievementsFragmentUnitTests.kt diff --git a/app/src/test/kotlin/fr/free/nrw/commons/TestAppAdapter.java b/app/src/test/kotlin/fr/free/nrw/commons/TestAppAdapter.java new file mode 100644 index 000000000..39bcc515a --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/TestAppAdapter.java @@ -0,0 +1,71 @@ +package fr.free.nrw.commons; + +import androidx.annotation.NonNull; +import okhttp3.OkHttpClient; +import org.wikipedia.AppAdapter; +import org.wikipedia.dataclient.Service; +import org.wikipedia.dataclient.SharedPreferenceCookieManager; +import org.wikipedia.dataclient.WikiSite; +import org.wikipedia.dataclient.okhttp.TestStubInterceptor; +import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor; +import org.wikipedia.login.LoginResult; + +public class TestAppAdapter extends AppAdapter { + + @Override + public String getMediaWikiBaseUrl() { + return Service.WIKIPEDIA_URL; + } + + @Override + public String getRestbaseUriFormat() { + return "%1$s://%2$s/api/rest_v1/"; + } + + @Override + public OkHttpClient getOkHttpClient(@NonNull WikiSite wikiSite) { + return new OkHttpClient.Builder() + .addInterceptor(new UnsuccessfulResponseInterceptor()) + .addInterceptor(new TestStubInterceptor()) + .build(); + } + + @Override + public int getDesiredLeadImageDp() { + return 0; + } + + @Override + public boolean isLoggedIn() { + return false; + } + + @Override + public String getUserName() { + return null; + } + + @Override + public String getPassword() { + return null; + } + + @Override + public void updateAccount(@NonNull LoginResult result) { + } + + @Override + public SharedPreferenceCookieManager getCookies() { + return null; + } + + @Override + public void setCookies(@NonNull SharedPreferenceCookieManager cookies) { + } + + @Override + public boolean logErrorsInsteadOfCrashing() { + return false; + } +} + diff --git a/app/src/test/kotlin/fr/free/nrw/commons/profile/achievements/AchievementsFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/profile/achievements/AchievementsFragmentUnitTests.kt new file mode 100644 index 000000000..199d30999 --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/profile/achievements/AchievementsFragmentUnitTests.kt @@ -0,0 +1,120 @@ +package fr.free.nrw.commons.profile.achievements + +import android.content.Context +import android.graphics.Bitmap +import android.view.MenuItem +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentTransaction +import fr.free.nrw.commons.TestAppAdapter +import fr.free.nrw.commons.TestCommonsApplication +import fr.free.nrw.commons.profile.ProfileActivity +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.MockitoAnnotations +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.RuntimeEnvironment +import org.robolectric.annotation.Config +import org.robolectric.fakes.RoboMenuItem +import org.wikipedia.AppAdapter + + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [21], application = TestCommonsApplication::class) +class AchievementsFragmentUnitTests { + + private lateinit var fragment: AchievementsFragment + + private lateinit var context: Context + + private lateinit var menuItem: MenuItem + + @Mock + private lateinit var bitmap: Bitmap + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + context = RuntimeEnvironment.application.applicationContext + menuItem = RoboMenuItem(context) + AppAdapter.set(TestAppAdapter()) + val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get() + fragment = AchievementsFragment() + val fragmentManager: FragmentManager = activity.supportFragmentManager + val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction() + fragmentTransaction.add(fragment, null) + fragmentTransaction.commit() + + } + + @Test + @Throws(Exception::class) + fun checkFragmentNotNull() { + Assert.assertNotNull(fragment) + } + + @Test + @Throws(Exception::class) + fun testShowAlert() { + fragment.showAlert(bitmap) + } + + + @Test + @Throws(Exception::class) + fun testShowInfoDialog() { + fragment.showInfoDialog() + } + + @Test + @Throws(Exception::class) + fun testShowUploadInfo() { + fragment.showUploadInfo() + } + + @Test + @Throws(Exception::class) + fun testShowRevertedInfo() { + fragment.showRevertedInfo() + } + + @Test + @Throws(Exception::class) + fun testShowUsedByWikiInfo() { + fragment.showUsedByWikiInfo() + } + + @Test + @Throws(Exception::class) + fun testShowImagesViaNearbyInfo() { + fragment.showImagesViaNearbyInfo() + } + + @Test + @Throws(Exception::class) + fun testShowFeaturedImagesInfo() { + fragment.showFeaturedImagesInfo() + } + + @Test + @Throws(Exception::class) + fun testShowThanksReceivedInfo() { + fragment.showThanksReceivedInfo() + } + + @Test + @Throws(Exception::class) + fun testShowQualityImagesInfo() { + fragment.showQualityImagesInfo() + } + + @Test + @Throws(Exception::class) + fun testOnOptionsItemSelected() { + fragment.onOptionsItemSelected(menuItem) + } + +} \ No newline at end of file