mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Add DepictsFragment Unit Tests and update tests dependencies (#4688)
* Add DepictsFragment Unit Tests and update tests dependencies * Attempt to fix CI
This commit is contained in:
parent
3dcd271980
commit
7ce80aa804
6 changed files with 229 additions and 20 deletions
|
|
@ -6,7 +6,7 @@ import android.os.Bundle
|
|||
import android.os.Looper
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.work.Configuration
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.testing.WorkManagerTestInitHelper
|
||||
import fr.free.nrw.commons.CommonsApplication
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
|
|
@ -105,6 +105,9 @@ class MainActivityUnitTests {
|
|||
MainActivity::class.java.getDeclaredField("contributionsFragment")
|
||||
fieldContributionsFragment.isAccessible = true
|
||||
fieldContributionsFragment.set(activity, contributionsFragment)
|
||||
|
||||
val config: Configuration = Configuration.Builder().build()
|
||||
WorkManagerTestInitHelper.initializeTestWorkManager(context, config)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -199,8 +202,6 @@ class MainActivityUnitTests {
|
|||
@Throws(Exception::class)
|
||||
fun testToggleLimitedConnectionMode() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
val config: Configuration = Configuration.Builder().build()
|
||||
WorkManager.initialize(context, config)
|
||||
`when`(
|
||||
defaultKvStore.getBoolean(
|
||||
CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED, false
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package fr.free.nrw.commons.upload
|
|||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.work.Configuration
|
||||
import androidx.work.testing.WorkManagerTestInitHelper
|
||||
import fr.free.nrw.commons.CommonsApplication
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
|
|
@ -62,6 +64,9 @@ class UploadActivityUnitTests {
|
|||
Whitebox.setInternalState(activity, "fragments", mutableListOf(uploadBaseFragment))
|
||||
Whitebox.setInternalState(activity, "presenter", presenter)
|
||||
Whitebox.setInternalState(activity, "contributionController", contributionController)
|
||||
|
||||
val config: Configuration = Configuration.Builder().build()
|
||||
WorkManagerTestInitHelper.initializeTestWorkManager(context, config)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -158,7 +163,6 @@ class UploadActivityUnitTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Ignore()
|
||||
@Throws(Exception::class)
|
||||
fun testMakeUploadRequest() {
|
||||
activity.makeUploadRequest()
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@ class UploadCategoriesFragmentUnitTests {
|
|||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetCategoriesCaseNonNull() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
fragment.setCategories(listOf())
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,210 @@
|
|||
package fr.free.nrw.commons.upload.depicts
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import fr.free.nrw.commons.upload.UploadActivity
|
||||
import fr.free.nrw.commons.upload.UploadBaseFragment
|
||||
import io.reactivex.disposables.Disposable
|
||||
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 org.wikipedia.AppAdapter
|
||||
import java.lang.reflect.Method
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
@LooperMode(LooperMode.Mode.PAUSED)
|
||||
class DepictsFragmentUnitTests {
|
||||
|
||||
private lateinit var fragment: DepictsFragment
|
||||
private lateinit var fragmentManager: FragmentManager
|
||||
private lateinit var layoutInflater: LayoutInflater
|
||||
private lateinit var view: View
|
||||
private lateinit var context: Context
|
||||
|
||||
@Mock
|
||||
private lateinit var savedInstanceState: Bundle
|
||||
|
||||
@Mock
|
||||
private lateinit var textView: TextView
|
||||
|
||||
@Mock
|
||||
private lateinit var imageView: ImageView
|
||||
|
||||
@Mock
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
|
||||
@Mock
|
||||
private lateinit var textInputEditText: TextInputEditText
|
||||
|
||||
@Mock
|
||||
private lateinit var progressBar: ProgressBar
|
||||
|
||||
@Mock
|
||||
private lateinit var textInputLayout: TextInputLayout
|
||||
|
||||
@Mock
|
||||
private lateinit var callback: UploadBaseFragment.Callback
|
||||
|
||||
@Mock
|
||||
private lateinit var disposable: Disposable
|
||||
|
||||
@Mock
|
||||
private lateinit var adapter: UploadDepictsAdapter
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
context = RuntimeEnvironment.application.applicationContext
|
||||
AppAdapter.set(TestAppAdapter())
|
||||
|
||||
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
||||
fragment = DepictsFragment()
|
||||
fragmentManager = activity.supportFragmentManager
|
||||
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
|
||||
fragmentTransaction.add(fragment, null)
|
||||
fragmentTransaction.commitNowAllowingStateLoss()
|
||||
|
||||
layoutInflater = LayoutInflater.from(activity)
|
||||
|
||||
view = LayoutInflater.from(activity)
|
||||
.inflate(R.layout.upload_depicts_fragment, null) as View
|
||||
|
||||
Whitebox.setInternalState(fragment, "depictsTitle", textView)
|
||||
Whitebox.setInternalState(fragment, "callback", callback)
|
||||
Whitebox.setInternalState(fragment, "tooltip", imageView)
|
||||
Whitebox.setInternalState(fragment, "depictsSubTitle", textView)
|
||||
Whitebox.setInternalState(fragment, "depictsRecyclerView", recyclerView)
|
||||
Whitebox.setInternalState(fragment, "depictsSearch", textInputEditText)
|
||||
Whitebox.setInternalState(fragment, "depictsSearchContainer", textInputLayout)
|
||||
Whitebox.setInternalState(fragment, "depictsSearchInProgress", progressBar)
|
||||
Whitebox.setInternalState(fragment, "subscribe", disposable)
|
||||
Whitebox.setInternalState(fragment, "adapter", adapter)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun checkFragmentNotNull() {
|
||||
Assert.assertNotNull(fragment)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnCreateView() {
|
||||
fragment.onCreateView(layoutInflater, null, savedInstanceState)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testInit() {
|
||||
val method: Method = DepictsFragment::class.java.getDeclaredMethod(
|
||||
"init"
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(fragment)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnBecameVisible() {
|
||||
val method: Method = DepictsFragment::class.java.getDeclaredMethod(
|
||||
"onBecameVisible"
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(fragment)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testGoToNextScreen() {
|
||||
fragment.goToNextScreen()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testGoToPreviousScreen() {
|
||||
fragment.goToPreviousScreen()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testNoDepictionSelected() {
|
||||
fragment.noDepictionSelected()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnDestroyView() {
|
||||
fragment.onDestroyView()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testShowProgress() {
|
||||
fragment.showProgress(true)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testShowErrorCaseTrue() {
|
||||
fragment.showError(true)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testShowErrorCaseFalse() {
|
||||
fragment.showError(false)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetDepictsList() {
|
||||
fragment.setDepictsList(listOf())
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnNextButtonClicked() {
|
||||
fragment.onNextButtonClicked()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnPreviousButtonClicked() {
|
||||
fragment.onPreviousButtonClicked()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSearchForDepictions() {
|
||||
val method: Method = DepictsFragment::class.java.getDeclaredMethod(
|
||||
"searchForDepictions",
|
||||
String::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(fragment, "")
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue