[Fixes Bug]: After moving between tabs on Bookmark fragment, Bookmarks never loads (#4951)

* Fixed the issue added tests

* Added requested changes
This commit is contained in:
Ayan Sarkar 2022-05-05 12:38:56 +05:30 committed by GitHub
parent 932991e060
commit a16dca9f56
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 7 deletions

View file

@ -6,12 +6,17 @@ import android.os.Bundle
import android.os.Looper.getMainLooper
import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.widget.GridView
import android.widget.ProgressBar
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
@ -19,6 +24,7 @@ import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.category.GridViewAdapter
import fr.free.nrw.commons.media.MediaClient
import fr.free.nrw.commons.profile.ProfileActivity
import media
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@ -46,9 +52,15 @@ class BookmarkPicturesFragmentUnitTests {
private lateinit var context: Context
private lateinit var view: View
private lateinit var statusTextView: TextView
private lateinit var progressBar: ProgressBar
private lateinit var gridView: GridView
@Mock
lateinit var statusTextView: TextView
@Mock
lateinit var progressBar: ProgressBar
@Mock
lateinit var gridView: GridView
@Mock
private lateinit var parentLayout: RelativeLayout
@ -87,9 +99,6 @@ class BookmarkPicturesFragmentUnitTests {
view = LayoutInflater.from(activity)
.inflate(R.layout.fragment_bookmarks_pictures, null) as View
statusTextView = view.findViewById(R.id.statusMessage)
progressBar = view.findViewById(R.id.loadingImagesProgressBar)
gridView = view.findViewById(R.id.bookmarkedPicturesList)
fragment.statusTextView = statusTextView
fragment.progressBar = progressBar
@ -102,7 +111,11 @@ class BookmarkPicturesFragmentUnitTests {
fragment.controller = controller
Whitebox.setInternalState(fragment, "gridAdapter", gridAdapter)
Whitebox.setInternalState(fragment, "gridAdapter", GridViewAdapter(
context,
0,
listOf(media())
))
}
@Test
@ -171,6 +184,22 @@ class BookmarkPicturesFragmentUnitTests {
method.invoke(fragment, throwable)
}
@Test
@Throws(Exception::class)
fun testHandleSuccess() {
gridAdapter.addItems(listOf(media()))
val method: Method = BookmarkPicturesFragment::class.java.getDeclaredMethod(
"handleSuccess",
List::class.java
)
method.isAccessible = true
method.invoke(fragment, listOf(media()))
verify(progressBar, times(1)).setVisibility(GONE)
verify(statusTextView, times(1)).setVisibility(GONE)
verify(gridView, times(1)).setVisibility(VISIBLE)
verify(gridView, times(1)).setAdapter(any())
}
@Test
@Throws(Exception::class)
fun testInitErrorView() {