mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Review category issues (#4897)
* Ask for category only if exists in Peer Review * Minor Fixes * Fixed wrong categories issue * Added comments * Added comments * Minor Changes * Added test * Tests * Tests * Tests
This commit is contained in:
parent
7bc78f67ff
commit
103e2d546e
9 changed files with 171 additions and 13 deletions
|
|
@ -1,21 +1,37 @@
|
|||
package fr.free.nrw.commons.review
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Looper.getMainLooper
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.Button
|
||||
import butterknife.BindView
|
||||
import com.facebook.drawee.backends.pipeline.Fresco
|
||||
import com.facebook.soloader.SoLoader
|
||||
import com.nhaarman.mockitokotlin2.doNothing
|
||||
import fr.free.nrw.commons.Media
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import io.reactivex.Scheduler
|
||||
import io.reactivex.Single
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.ArgumentMatchers
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.*
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.mockito.Spy
|
||||
import org.powermock.reflect.Whitebox
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
import org.robolectric.Shadows.shadowOf
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
import org.robolectric.fakes.RoboMenu
|
||||
import org.robolectric.fakes.RoboMenuItem
|
||||
import org.wikipedia.AppAdapter
|
||||
|
|
@ -23,6 +39,7 @@ import java.lang.reflect.Method
|
|||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
@LooperMode(LooperMode.Mode.PAUSED)
|
||||
class ReviewActivityTest {
|
||||
|
||||
private lateinit var activity: ReviewActivity
|
||||
|
|
@ -33,6 +50,20 @@ class ReviewActivityTest {
|
|||
|
||||
private lateinit var context: Context
|
||||
|
||||
@Mock
|
||||
private lateinit var reviewPagerAdapter: ReviewPagerAdapter
|
||||
|
||||
@Mock
|
||||
var reviewPager: ReviewViewPager? = null
|
||||
|
||||
var hasNonHiddenCategories: Boolean = false
|
||||
|
||||
@Mock
|
||||
var reviewHelper: ReviewHelper? = null
|
||||
|
||||
@Mock
|
||||
private lateinit var reviewImageFragment: ReviewImageFragment
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
|
|
@ -50,7 +81,11 @@ class ReviewActivityTest {
|
|||
menuItem = RoboMenuItem(null)
|
||||
|
||||
menu = RoboMenu(context)
|
||||
|
||||
Whitebox.setInternalState(activity, "reviewPager", reviewPager);
|
||||
Whitebox.setInternalState(activity, "hasNonHiddenCategories", hasNonHiddenCategories);
|
||||
Whitebox.setInternalState(activity, "reviewHelper", reviewHelper);
|
||||
Whitebox.setInternalState(activity, "reviewImageFragment", reviewImageFragment);
|
||||
Whitebox.setInternalState(activity, "reviewPagerAdapter", reviewPagerAdapter);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -69,9 +104,46 @@ class ReviewActivityTest {
|
|||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSwipeToNext() {
|
||||
shadowOf(getMainLooper()).idle()
|
||||
doReturn(1,2).`when`(reviewPager)?.currentItem
|
||||
activity.swipeToNext()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSwipeToLastFragment() {
|
||||
shadowOf(getMainLooper()).idle()
|
||||
doReturn(3).`when`(reviewPager)?.currentItem
|
||||
val media = mock(Media::class.java)
|
||||
|
||||
doReturn(mapOf<String, Boolean>("test" to false)).`when`(media).categoriesHiddenStatus
|
||||
doReturn(Single.just(media)).`when`(reviewHelper)?.randomMedia
|
||||
Assert.assertNotNull(reviewHelper?.randomMedia)
|
||||
reviewHelper
|
||||
?.randomMedia
|
||||
?.test()
|
||||
?.assertValue(media);
|
||||
activity.swipeToNext()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testFindNonHiddenCategories() {
|
||||
shadowOf(getMainLooper()).idle()
|
||||
val media = mock(Media::class.java)
|
||||
doReturn(mapOf<String, Boolean>("test" to false)).`when`(media).categoriesHiddenStatus
|
||||
doReturn(mock(ReviewImageFragment::class.java)).`when`(reviewPagerAdapter).instantiateItem(ArgumentMatchers.any(), anyInt())
|
||||
doReturn("").`when`(media).filename
|
||||
doNothing().`when`(reviewImageFragment).disableButtons()
|
||||
|
||||
var findNonHiddenCategory: Method =
|
||||
ReviewActivity::class.java.getDeclaredMethod("findNonHiddenCategories"
|
||||
, Media::class.java)
|
||||
findNonHiddenCategory.isAccessible = true
|
||||
findNonHiddenCategory.invoke(activity, media)
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnDestroy() {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import androidx.fragment.app.FragmentManager
|
|||
import androidx.fragment.app.FragmentTransaction
|
||||
import com.facebook.drawee.backends.pipeline.Fresco
|
||||
import com.facebook.soloader.SoLoader
|
||||
import com.nhaarman.mockitokotlin2.doReturn
|
||||
import fr.free.nrw.commons.Media
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
|
|
@ -20,7 +22,10 @@ import org.junit.Test
|
|||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.powermock.reflect.Whitebox
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
|
|
@ -51,6 +56,7 @@ class ReviewImageFragmentTest {
|
|||
@Mock
|
||||
private lateinit var savedInstanceState: Bundle
|
||||
|
||||
private lateinit var activity: ReviewActivity
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
|
@ -61,7 +67,7 @@ class ReviewImageFragmentTest {
|
|||
SoLoader.setInTestMode()
|
||||
|
||||
Fresco.initialize(context)
|
||||
val activity = Robolectric.buildActivity(ReviewActivity::class.java).create().get()
|
||||
activity = Robolectric.buildActivity(ReviewActivity::class.java).create().get()
|
||||
fragment = ReviewImageFragment()
|
||||
val bundle = Bundle()
|
||||
bundle.putInt("position", 1)
|
||||
|
|
@ -110,10 +116,17 @@ class ReviewImageFragmentTest {
|
|||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnUpdateCategoriesQuestion() {
|
||||
shadowOf(Looper.getMainLooper()).idle()
|
||||
val media = mock(Media::class.java)
|
||||
Whitebox.setInternalState(activity, "media", media)
|
||||
Assert.assertNotNull(media)
|
||||
val categories = mapOf<String, Boolean>("Category:" to false)
|
||||
doReturn(categories).`when`(media).categoriesHiddenStatus
|
||||
Assert.assertNotNull(media.categoriesHiddenStatus)
|
||||
Assert.assertNotNull(fragment.isAdded)
|
||||
val method: Method =
|
||||
ReviewImageFragment::class.java.getDeclaredMethod("updateCategoriesQuestion")
|
||||
method.isAccessible = true
|
||||
shadowOf(Looper.getMainLooper()).idle()
|
||||
method.invoke(fragment)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue