Tests updated (#4538)

This commit is contained in:
Aditya-Srivastav 2021-08-10 07:31:15 +05:30 committed by GitHub
parent bc994d162d
commit d8d8038973
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 116 additions and 10 deletions

View file

@ -69,7 +69,7 @@ class FolderAdapter(
}
} else {
val previewImage = folder.images[0]
Glide.with(context).load(previewImage.uri).into(holder.image)
Glide.with(holder.image).load(previewImage.uri).into(holder.image)
holder.name.text = folder.name
holder.count.text = count.toString()
holder.itemView.setOnClickListener {

View file

@ -85,7 +85,7 @@ class ImageAdapter(
} else {
holder.itemUnselected();
}
Glide.with(context).load(image.uri).thumbnail(0.3f).into(holder.image)
Glide.with(holder.image).load(image.uri).thumbnail(0.3f).into(holder.image)
imageLoader.queryAndSetView(holder, image)
holder.itemView.setOnClickListener {
selectOrRemoveImage(holder, position)

View file

@ -48,6 +48,7 @@ class ImageFragment: CommonsDaggerSupportFragment() {
*/
private var selectorRV: RecyclerView? = null
private var loader: ProgressBar? = null
lateinit var filteredImages: ArrayList<Image>;
/**
* View model Factory.
@ -130,8 +131,6 @@ class ImageFragment: CommonsDaggerSupportFragment() {
return root
}
lateinit var filteredImages: ArrayList<Image>;
/**
* Handle view model result.
*/

View file

@ -1,11 +1,14 @@
package fr.free.nrw.commons.customselector.ui.adapter
import android.content.ContentResolver
import fr.free.nrw.commons.R
import android.content.Context
import android.net.Uri
import android.view.LayoutInflater
import android.view.View
import android.widget.GridLayout
import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.customselector.listeners.FolderClickListener
import fr.free.nrw.commons.customselector.model.Folder
@ -15,7 +18,10 @@ import org.junit.Before
import org.junit.Test
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
@ -34,13 +40,21 @@ class FolderAdapterTest {
private lateinit var folder: Folder
private lateinit var folderList: ArrayList<Folder>
@Mock
private lateinit var context: Context
@Mock
private lateinit var mockContentResolver: ContentResolver
@Before
@Throws(Exception::class)
fun setUp() {
MockitoAnnotations.initMocks(this)
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).get()
image = Image(1, "image", uri, "abc/abc", 1, "bucket1")
folder = Folder(1, "bucket1", ArrayList(listOf(image)))
folderList = ArrayList(listOf(folder))
folderList = ArrayList(listOf(folder, folder, folder))
folderAdapter = FolderAdapter(activity, activity as FolderClickListener)
}
@ -57,9 +71,13 @@ class FolderAdapterTest {
*/
@Test
fun onBindViewHolder() {
folderAdapter.init(folderList)
val inflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val listItemView: View = inflater.inflate(R.layout.item_custom_selector_folder, null, false)
whenever(context.contentResolver).thenReturn(mockContentResolver)
whenever(mockContentResolver.getType(any())).thenReturn("jpg")
Whitebox.setInternalState(folderAdapter, "context", context)
folderAdapter.init(folderList)
folderAdapter.onBindViewHolder(FolderAdapter.FolderViewHolder(listItemView), 0)
}

View file

@ -1,9 +1,12 @@
package fr.free.nrw.commons.customselector.ui.adapter
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import android.view.LayoutInflater
import android.view.View
import android.widget.GridLayout
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.customselector.listeners.ImageSelectListener
@ -15,6 +18,7 @@ import org.junit.Test
import org.junit.jupiter.api.Assertions
import org.junit.runner.RunWith
import org.mockito.*
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
@ -26,18 +30,23 @@ import java.lang.reflect.Field
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
class ImageAdapterTest {
@Mock
private lateinit var image: Image
@Mock
private lateinit var imageLoader: ImageLoader
@Mock
private lateinit var imageSelectListener: ImageSelectListener
@Mock
private lateinit var context: Context
@Mock
private lateinit var mockContentResolver: ContentResolver
private lateinit var activity: CustomSelectorActivity
private lateinit var imageAdapter: ImageAdapter
private lateinit var images : ArrayList<Image>
private lateinit var holder: ImageAdapter.ImageViewHolder
private lateinit var selectedImageField: Field
private var uri: Uri = Mockito.mock(Uri::class.java)
private lateinit var image: Image
/**
* Set up variables.
@ -48,6 +57,7 @@ class ImageAdapterTest {
MockitoAnnotations.initMocks(this)
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).get()
imageAdapter = ImageAdapter(activity, imageSelectListener, imageLoader)
image = Image(1, "image", uri, "abc/abc", 1, "bucket1")
images = ArrayList()
val inflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
@ -71,6 +81,11 @@ class ImageAdapterTest {
*/
@Test
fun onBindViewHolder() {
whenever(context.contentResolver).thenReturn(mockContentResolver)
whenever(mockContentResolver.getType(uri)).thenReturn("jpg")
Whitebox.setInternalState(imageAdapter, "context", context)
// Parameters.
images.add(image)
imageAdapter.init(images)
@ -118,4 +133,13 @@ class ImageAdapterTest {
fun getItemCount() {
Assertions.assertEquals(0, imageAdapter.itemCount)
}
/**
* Test getImageId
*/
@Test
fun getImageIdAt() {
imageAdapter.init(listOf(image))
Assertions.assertEquals(1, imageAdapter.getImageIdAt(0))
}
}

View file

@ -2,7 +2,11 @@ package fr.free.nrw.commons.customselector.ui.selector
import android.net.Uri
import android.os.Bundle
import android.os.Looper
import android.os.Looper.getMainLooper
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.customselector.model.Folder
import fr.free.nrw.commons.customselector.model.Image
import org.junit.Before
@ -12,7 +16,11 @@ import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
/**
* Custom Selector Activity Test
@ -29,6 +37,8 @@ class CustomSelectorActivityTest {
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
AppAdapter.set(TestAppAdapter())
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java)
.get()
val onCreate = activity.javaClass.getDeclaredMethod("onCreate", Bundle::class.java)
@ -62,7 +72,7 @@ class CustomSelectorActivityTest {
@Test
@Throws(Exception::class)
fun testOnFolderClick() {
activity.onFolderClick(Folder(1, "test", arrayListOf()));
activity.onFolderClick(1, "test", 0);
}
/**
@ -93,4 +103,17 @@ class CustomSelectorActivityTest {
fun testOnBackPressed() {
activity.onBackPressed()
}
/**
* Test onDestroy Function.
*/
@Test
@Throws(Exception::class)
fun testOnDestroy() {
val method: Method = CustomSelectorActivity::class.java.getDeclaredMethod(
"onDestroy"
)
method.isAccessible = true
method.invoke(activity)
}
}

View file

@ -127,4 +127,15 @@ class FolderFragmentTest {
func.isAccessible = true
func.invoke(fragment, Result(CallbackStatus.SUCCESS, arrayListOf()))
}
/**
* Test onResume.
*/
@Test
fun testOnResume() {
val func = fragment.javaClass.getDeclaredMethod("onResume")
func.isAccessible = true
func.invoke(fragment)
}
}

View file

@ -3,14 +3,17 @@ package fr.free.nrw.commons.customselector.ui.selector
import android.content.Context
import android.os.Bundle
import android.os.Looper
import android.os.Looper.getMainLooper
import android.view.LayoutInflater
import android.view.View
import android.widget.ProgressBar
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
@ -29,6 +32,7 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.Shadows
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
@ -50,6 +54,9 @@ class ImageFragmentTest {
private lateinit var context: Context
private lateinit var viewModelField: Field
@Mock
private lateinit var layoutManager: GridLayoutManager
@Mock
private lateinit var image: Image
@ -71,7 +78,7 @@ class ImageFragmentTest {
Fresco.initialize(context)
val activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()
fragment = ImageFragment.newInstance(1)
fragment = ImageFragment.newInstance(1,0)
val fragmentManager: FragmentManager = activity.supportFragmentManager
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.add(fragment, null)
@ -132,4 +139,28 @@ class ImageFragmentTest {
assertEquals(3, func.invoke(fragment))
}
/**
* Test onResume.
*/
@Test
fun testOnResume() {
val func = fragment.javaClass.getDeclaredMethod("onResume")
func.isAccessible = true
func.invoke(fragment)
}
/**
* Test onDestroy.
*/
@Test
fun testOnDestroy() {
shadowOf(getMainLooper()).idle()
selectorRV.layoutManager = layoutManager
whenever(layoutManager.findFirstVisibleItemPosition()).thenReturn(1)
val func = fragment.javaClass.getDeclaredMethod("onDestroy")
func.isAccessible = true
func.invoke(fragment)
}
}