mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 06:43:56 +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
	
	 Devarsh Mavani
						Devarsh Mavani