Add few more unit tests for AchievementsFragment (#4272)

This commit is contained in:
Madhur Gupta 2021-02-23 15:13:20 +05:30 committed by GitHub
parent 8fa26bb00c
commit 64993dfbc8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,8 +3,12 @@ package fr.free.nrw.commons.profile.achievements
import android.content.Context
import android.graphics.Bitmap
import android.view.MenuItem
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.dinuscxj.progressbar.CircleProgressBar
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.profile.ProfileActivity
@ -14,12 +18,14 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
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
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -32,9 +38,53 @@ class AchievementsFragmentUnitTests {
private lateinit var menuItem: MenuItem
private lateinit var achievements: Achievements
@Mock
private lateinit var imageView: ImageView
@Mock
private lateinit var badgeText: TextView
@Mock
private lateinit var levelNumber: TextView
@Mock
private lateinit var thanksReceived: TextView
@Mock
private lateinit var imagesUploadedProgressbar: CircleProgressBar
@Mock
private lateinit var imagesUsedByWikiProgressBar: CircleProgressBar
@Mock
private lateinit var imageRevertsProgressbar: CircleProgressBar
@Mock
private lateinit var imagesFeatured: TextView
@Mock
private lateinit var tvQualityImages: TextView
@Mock
private lateinit var imagesRevertLimitText: TextView
@Mock
private lateinit var imageByWikiText: TextView
@Mock
private lateinit var imageRevertedText: TextView
@Mock
private lateinit var imageUploadedText: TextView
@Mock
private lateinit var bitmap: Bitmap
@Mock
private lateinit var progressBar: ProgressBar
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
@ -48,6 +98,39 @@ class AchievementsFragmentUnitTests {
fragmentTransaction.add(fragment, null)
fragmentTransaction.commit()
achievements = Achievements(0, 0, 0, 0, 0, 0, 0)
Whitebox.setInternalState(fragment, "thanksReceived", thanksReceived)
Whitebox.setInternalState(
fragment,
"imagesUsedByWikiProgressBar",
imagesUsedByWikiProgressBar
)
Whitebox.setInternalState(
fragment,
"imagesUsedByWikiProgressBar",
imagesUsedByWikiProgressBar
)
Whitebox.setInternalState(fragment, "imagesFeatured", imagesFeatured)
Whitebox.setInternalState(fragment, "tvQualityImages", tvQualityImages)
Whitebox.setInternalState(fragment, "levelNumber", levelNumber)
Whitebox.setInternalState(fragment, "imageView", imageView)
Whitebox.setInternalState(fragment, "badgeText", badgeText)
Whitebox.setInternalState(fragment, "imagesUploadedProgressbar", imagesUploadedProgressbar)
Whitebox.setInternalState(fragment, "imageRevertsProgressbar", imageRevertsProgressbar)
Whitebox.setInternalState(
fragment,
"imagesUsedByWikiProgressBar",
imagesUsedByWikiProgressBar
)
Whitebox.setInternalState(fragment, "imageView", imageView)
Whitebox.setInternalState(fragment, "imageByWikiText", imageByWikiText)
Whitebox.setInternalState(fragment, "imageRevertedText", imageRevertedText)
Whitebox.setInternalState(fragment, "imageUploadedText", imageUploadedText)
Whitebox.setInternalState(fragment, "imageView", imageView)
Whitebox.setInternalState(fragment, "progressBar", progressBar)
Whitebox.setInternalState(fragment, "imagesRevertLimitText", imagesRevertLimitText)
Whitebox.setInternalState(fragment, "item", menuItem)
}
@Test
@ -117,4 +200,120 @@ class AchievementsFragmentUnitTests {
fragment.onOptionsItemSelected(menuItem)
}
@Test
@Throws(Exception::class)
fun testLaunchAlert() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"launchAlert",
String::class.java,
String::class.java
)
method.isAccessible = true
method.invoke(fragment, "", "")
}
@Test
@Throws(Exception::class)
fun testHideProgressBar() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"hideProgressBar",
Achievements::class.java
)
method.isAccessible = true
method.invoke(fragment, achievements)
}
@Test
@Throws(Exception::class)
fun testSetAchievementsUploadCount() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"setAchievementsUploadCount",
Achievements::class.java,
Int::class.java
)
method.isAccessible = true
method.invoke(fragment, achievements, 0)
}
@Test
@Throws(Exception::class)
fun testCheckAccount() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"checkAccount"
)
method.isAccessible = true
method.invoke(fragment)
}
@Test
@Throws(Exception::class)
fun testSetUploadCount() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"setUploadCount",
Achievements::class.java
)
method.isAccessible = true
method.invoke(fragment, achievements)
}
@Test
@Throws(Exception::class)
fun testOnError() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"onError"
)
method.isAccessible = true
method.invoke(fragment)
}
@Test
@Throws(Exception::class)
fun testShowSnackBarWithRetryTrue() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"showSnackBarWithRetry", Boolean::class.java
)
method.isAccessible = true
method.invoke(fragment, true)
}
@Test
@Throws(Exception::class)
fun testShowSnackBarWithRetryFalse() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"showSnackBarWithRetry", Boolean::class.java
)
method.isAccessible = true
method.invoke(fragment, false)
}
@Test
@Throws(Exception::class)
fun testSetWikidataEditCount() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"setWikidataEditCount"
)
method.isAccessible = true
method.invoke(fragment)
}
@Test
@Throws(Exception::class)
fun testSetAchievements() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"setAchievements"
)
method.isAccessible = true
method.invoke(fragment)
}
@Test
@Throws(Exception::class)
fun testShareScreen() {
val method: Method = AchievementsFragment::class.java.getDeclaredMethod(
"shareScreen", Bitmap::class.java
)
method.isAccessible = true
method.invoke(fragment, bitmap)
}
}