mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Add UploadMediaDetailAdapter Unit Tests (#4819)
This commit is contained in:
parent
dea438c27c
commit
092079986a
1 changed files with 148 additions and 0 deletions
|
|
@ -0,0 +1,148 @@
|
||||||
|
package fr.free.nrw.commons.upload
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.widget.GridLayout
|
||||||
|
import com.nhaarman.mockitokotlin2.verify
|
||||||
|
import com.nhaarman.mockitokotlin2.whenever
|
||||||
|
import fr.free.nrw.commons.TestCommonsApplication
|
||||||
|
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.powermock.reflect.Whitebox
|
||||||
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
import org.robolectric.RuntimeEnvironment
|
||||||
|
import org.robolectric.annotation.Config
|
||||||
|
import org.robolectric.annotation.LooperMode
|
||||||
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||||
|
@LooperMode(LooperMode.Mode.PAUSED)
|
||||||
|
class UploadMediaDetailAdapterUnitTest {
|
||||||
|
|
||||||
|
private lateinit var adapter: UploadMediaDetailAdapter
|
||||||
|
private lateinit var context: Context
|
||||||
|
private lateinit var viewHolder: UploadMediaDetailAdapter.ViewHolder
|
||||||
|
private lateinit var activity: UploadActivity
|
||||||
|
private lateinit var uploadMediaDetails: List<UploadMediaDetail>
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var uploadMediaDetail: UploadMediaDetail
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var eventListener: UploadMediaDetailAdapter.EventListener
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this)
|
||||||
|
uploadMediaDetails = mutableListOf(uploadMediaDetail, uploadMediaDetail)
|
||||||
|
activity = Robolectric.buildActivity(UploadActivity::class.java).get()
|
||||||
|
adapter = UploadMediaDetailAdapter("")
|
||||||
|
context = RuntimeEnvironment.application.applicationContext
|
||||||
|
Whitebox.setInternalState(adapter, "uploadMediaDetails", uploadMediaDetails)
|
||||||
|
Whitebox.setInternalState(adapter, "eventListener", eventListener)
|
||||||
|
viewHolder = adapter.onCreateViewHolder(GridLayout(activity), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun checkAdapterNotNull() {
|
||||||
|
Assert.assertNotNull(adapter)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testSetItems() {
|
||||||
|
val list = mutableListOf(uploadMediaDetail)
|
||||||
|
val uploadMediaDetails: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("uploadMediaDetails")
|
||||||
|
uploadMediaDetails.isAccessible = true
|
||||||
|
val selectedLanguages: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("selectedLanguages")
|
||||||
|
selectedLanguages.isAccessible = true
|
||||||
|
adapter.items = list
|
||||||
|
Assert.assertEquals(uploadMediaDetails.get(adapter), list)
|
||||||
|
val map: HashMap<Int, String> = selectedLanguages.get(adapter) as HashMap<Int, String>
|
||||||
|
Assert.assertEquals(map.size, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testGetItems() {
|
||||||
|
val list = mutableListOf(uploadMediaDetail)
|
||||||
|
val uploadMediaDetails: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("uploadMediaDetails")
|
||||||
|
uploadMediaDetails.isAccessible = true
|
||||||
|
uploadMediaDetails.set(adapter, list)
|
||||||
|
Assert.assertEquals(adapter.items, list)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testGetItemCount() {
|
||||||
|
val list = mutableListOf(uploadMediaDetail)
|
||||||
|
val uploadMediaDetails: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("uploadMediaDetails")
|
||||||
|
uploadMediaDetails.isAccessible = true
|
||||||
|
uploadMediaDetails.set(adapter, list)
|
||||||
|
Assert.assertEquals(adapter.itemCount, list.size)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testAddDescription() {
|
||||||
|
val list = mutableListOf(uploadMediaDetail)
|
||||||
|
val uploadMediaDetails: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("uploadMediaDetails")
|
||||||
|
uploadMediaDetails.isAccessible = true
|
||||||
|
uploadMediaDetails.set(adapter, list)
|
||||||
|
val selectedLanguages: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("selectedLanguages")
|
||||||
|
selectedLanguages.isAccessible = true
|
||||||
|
selectedLanguages.set(adapter, hashMapOf<Int, String>())
|
||||||
|
adapter.addDescription(uploadMediaDetail)
|
||||||
|
val map: HashMap<Int, String> = selectedLanguages.get(adapter) as HashMap<Int, String>
|
||||||
|
Assert.assertEquals(map[list.size], null)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun testRemoveDescription() {
|
||||||
|
val list = mutableListOf(uploadMediaDetail)
|
||||||
|
val uploadMediaDetails: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("uploadMediaDetails")
|
||||||
|
uploadMediaDetails.isAccessible = true
|
||||||
|
uploadMediaDetails.set(adapter, list)
|
||||||
|
val selectedLanguages: Field =
|
||||||
|
UploadMediaDetailAdapter::class.java.getDeclaredField("selectedLanguages")
|
||||||
|
selectedLanguages.isAccessible = true
|
||||||
|
selectedLanguages.set(adapter, hashMapOf<Int, String>())
|
||||||
|
adapter.removeDescription(uploadMediaDetail, list.size)
|
||||||
|
val map: HashMap<Int, String> = selectedLanguages.get(adapter) as HashMap<Int, String>
|
||||||
|
Assert.assertEquals(map[list.size], null)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testOnBindViewHolderPosition0() {
|
||||||
|
Whitebox.setInternalState(adapter, "savedLanguageValue", "")
|
||||||
|
whenever(uploadMediaDetail.isManuallyAdded).thenReturn(false)
|
||||||
|
whenever(uploadMediaDetail.selectedLanguageIndex).thenReturn(-1)
|
||||||
|
adapter.onBindViewHolder(viewHolder, 0)
|
||||||
|
verify(eventListener).onPrimaryCaptionTextChange(false)
|
||||||
|
verify(uploadMediaDetail).isManuallyAdded
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testOnBindViewHolderPosition1() {
|
||||||
|
Whitebox.setInternalState(adapter, "savedLanguageValue", "en")
|
||||||
|
whenever(uploadMediaDetail.isManuallyAdded).thenReturn(true)
|
||||||
|
whenever(uploadMediaDetail.selectedLanguageIndex).thenReturn(1)
|
||||||
|
adapter.onBindViewHolder(viewHolder, 1)
|
||||||
|
verify(uploadMediaDetail).isManuallyAdded
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue