mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Update MoreBottomSheetFragment Unit Tests (#4812)
* Update MoreBottomSheetFragment Unit Tests * Fix failing tests
This commit is contained in:
parent
4081bf6e61
commit
458024bdee
1 changed files with 85 additions and 4 deletions
|
|
@ -1,21 +1,38 @@
|
|||
package fr.free.nrw.commons.navtab
|
||||
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Looper
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import fr.free.nrw.commons.CommonsApplication
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||
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.Mockito.`when`
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.powermock.reflect.Whitebox
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
import org.robolectric.Shadows
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
import org.robolectric.shadows.ShadowActivity
|
||||
import org.robolectric.shadows.ShadowAlertDialog
|
||||
import java.lang.reflect.Method
|
||||
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
|
|
@ -23,21 +40,38 @@ import org.robolectric.annotation.LooperMode
|
|||
class MoreBottomSheetFragmentUnitTests {
|
||||
|
||||
private lateinit var fragment: MoreBottomSheetFragment
|
||||
|
||||
private lateinit var view: View
|
||||
private lateinit var layoutInflater: LayoutInflater
|
||||
private lateinit var context: Context
|
||||
private lateinit var activity: ProfileActivity
|
||||
|
||||
@Mock
|
||||
private lateinit var store: JsonKvStore
|
||||
|
||||
@Mock
|
||||
private lateinit var morePeerReview: TextView
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
||||
MockitoAnnotations.initMocks(this)
|
||||
context = RuntimeEnvironment.application.applicationContext
|
||||
|
||||
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||
activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
|
||||
fragment = MoreBottomSheetFragment()
|
||||
val fragmentManager: FragmentManager = activity.supportFragmentManager
|
||||
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
|
||||
fragmentTransaction.add(fragment, null)
|
||||
fragmentTransaction.commit()
|
||||
fragmentTransaction.commitNowAllowingStateLoss()
|
||||
|
||||
Whitebox.setInternalState(fragment, "store", store)
|
||||
Whitebox.setInternalState(fragment, "morePeerReview", morePeerReview)
|
||||
|
||||
`when`(store.getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED)).thenReturn(
|
||||
true
|
||||
)
|
||||
|
||||
layoutInflater = LayoutInflater.from(activity)
|
||||
view = fragment.onCreateView(layoutInflater, null, null) as View
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -58,6 +92,8 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnLogoutClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onLogoutClicked()
|
||||
val dialog: AlertDialog = ShadowAlertDialog.getLatestDialog() as AlertDialog
|
||||
Assert.assertEquals(dialog.isShowing, true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -65,6 +101,8 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnFeedbackClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onFeedbackClicked()
|
||||
val dialog: AlertDialog = ShadowAlertDialog.getLatestDialog() as AlertDialog
|
||||
Assert.assertEquals(dialog.isShowing, true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -72,6 +110,11 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnAboutClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onAboutClicked()
|
||||
val shadowActivity: ShadowActivity = Shadows.shadowOf(activity)
|
||||
val intentForResult: ShadowActivity.IntentForResult =
|
||||
shadowActivity.nextStartedActivityForResult
|
||||
val nextActivity: ComponentName? = intentForResult.intent.component
|
||||
Assert.assertEquals(nextActivity?.className?.contains(".AboutActivity"), true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -79,6 +122,11 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnTutorialClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onTutorialClicked()
|
||||
val shadowActivity: ShadowActivity = Shadows.shadowOf(activity)
|
||||
val intentForResult: ShadowActivity.IntentForResult =
|
||||
shadowActivity.nextStartedActivityForResult
|
||||
val nextActivity: ComponentName? = intentForResult.intent.component
|
||||
Assert.assertEquals(nextActivity?.className?.contains(".WelcomeActivity"), true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -86,6 +134,11 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnSettingsClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onSettingsClicked()
|
||||
val shadowActivity: ShadowActivity = Shadows.shadowOf(activity)
|
||||
val intentForResult: ShadowActivity.IntentForResult =
|
||||
shadowActivity.nextStartedActivityForResult
|
||||
val nextActivity: ComponentName? = intentForResult.intent.component
|
||||
Assert.assertEquals(nextActivity?.className?.contains(".SettingsActivity"), true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -93,6 +146,11 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnProfileClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onProfileClicked()
|
||||
val shadowActivity: ShadowActivity = Shadows.shadowOf(activity)
|
||||
val intentForResult: ShadowActivity.IntentForResult =
|
||||
shadowActivity.nextStartedActivityForResult
|
||||
val nextActivity: ComponentName? = intentForResult.intent.component
|
||||
Assert.assertEquals(nextActivity?.className?.contains(".ProfileActivity"), true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -100,6 +158,29 @@ class MoreBottomSheetFragmentUnitTests {
|
|||
fun testOnPeerReviewClicked() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.onPeerReviewClicked()
|
||||
val shadowActivity: ShadowActivity = Shadows.shadowOf(activity)
|
||||
val intentForResult: ShadowActivity.IntentForResult =
|
||||
shadowActivity.nextStartedActivityForResult
|
||||
val nextActivity: ComponentName? = intentForResult.intent.component
|
||||
Assert.assertEquals(nextActivity?.className?.contains(".ReviewActivity"), true)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSendFeedback() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
val method: Method = MoreBottomSheetFragment::class.java.getDeclaredMethod("sendFeedback")
|
||||
method.isAccessible = true
|
||||
method.invoke(fragment)
|
||||
val shadowActivity: ShadowActivity = Shadows.shadowOf(activity)
|
||||
val startedIntent = shadowActivity.nextStartedActivity
|
||||
Assert.assertEquals(startedIntent.action, Intent.ACTION_SENDTO)
|
||||
Assert.assertEquals(startedIntent.type, null)
|
||||
Assert.assertEquals(startedIntent.`data`, Uri.parse("mailto:"))
|
||||
Assert.assertEquals(
|
||||
startedIntent.extras?.get(Intent.EXTRA_SUBJECT),
|
||||
CommonsApplication.FEEDBACK_EMAIL_SUBJECT
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue