Skip to content

Commit 0066ef0

Browse files
refactor test
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
1 parent d550215 commit 0066ef0

File tree

5 files changed

+66
-68
lines changed

5 files changed

+66
-68
lines changed

app/src/test/kotlin/fr/free/nrw/commons/customselector/ui/selector/CustomSelectorActivityTest.kt

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package fr.free.nrw.commons.customselector.ui.selector
22

3+
import android.app.Activity
34
import android.content.Intent
45
import android.net.Uri
56
import android.os.Bundle
7+
import androidx.activity.result.ActivityResult
68
import fr.free.nrw.commons.OkHttpConnectionFactory
79
import fr.free.nrw.commons.TestCommonsApplication
810
import fr.free.nrw.commons.contributions.ContributionDao
@@ -102,16 +104,16 @@ class CustomSelectorActivityTest {
102104
*/
103105
@Test
104106
@Throws(Exception::class)
105-
fun testOnActivityResult() {
107+
fun testResultLauncher() {
108+
val intent = Mockito.mock(Intent::class.java)
109+
val activityResult = ActivityResult(Activity.RESULT_OK,intent)
106110
val func =
107111
activity.javaClass.getDeclaredMethod(
108-
"onActivityResult",
109-
Int::class.java,
110-
Int::class.java,
111-
Intent::class.java,
112+
"onFullScreenDataReceived",
113+
ActivityResult::class.java,
112114
)
113115
func.isAccessible = true
114-
func.invoke(activity, 512, -1, Mockito.mock(Intent::class.java))
116+
func.invoke(activity, activityResult)
115117
}
116118

117119
/**

app/src/test/kotlin/fr/free/nrw/commons/filepicker/FilePickerTest.kt

+37-58
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@ import android.content.Context
66
import android.content.Intent
77
import android.content.SharedPreferences
88
import android.net.Uri
9+
import android.provider.MediaStore
10+
import androidx.activity.result.ActivityResultLauncher
911
import androidx.preference.PreferenceManager
1012
import androidx.test.core.app.ApplicationProvider
13+
import com.nhaarman.mockitokotlin2.KArgumentCaptor
14+
import com.nhaarman.mockitokotlin2.argumentCaptor
1115
import com.nhaarman.mockitokotlin2.verify
1216
import fr.free.nrw.commons.TestCommonsApplication
13-
import fr.free.nrw.commons.filepicker.Constants.RequestCodes
17+
import fr.free.nrw.commons.customselector.ui.selector.CustomSelectorActivity
1418
import org.junit.Assert.assertEquals
1519
import org.junit.Before
1620
import org.junit.Test
1721
import org.junit.runner.RunWith
18-
import org.mockito.ArgumentCaptor
19-
import org.mockito.ArgumentMatchers
20-
import org.mockito.Captor
2122
import org.mockito.Mock
2223
import org.mockito.Mockito.mock
2324
import org.mockito.Mockito.`when`
@@ -48,8 +49,10 @@ class FilePickerTest {
4849
@Mock
4950
var unit: Unit? = null
5051

51-
@Captor
52-
var requestCodeCaptor: ArgumentCaptor<Integer>? = null
52+
@Mock
53+
private lateinit var mockResultLauncher: ActivityResultLauncher<Intent>
54+
55+
private val intentCaptor: KArgumentCaptor<Intent> = argumentCaptor()
5356

5457
private lateinit var context: Context
5558

@@ -65,15 +68,17 @@ class FilePickerTest {
6568
`when`(sharedPref.edit()).thenReturn(sharedPreferencesEditor)
6669
`when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor)
6770
val openDocumentPreferred = nextBoolean()
68-
FilePicker.openGallery(activity, 0, openDocumentPreferred)
69-
verify(activity).startActivityForResult(
70-
ArgumentMatchers.any(),
71-
requestCodeCaptor?.capture()?.toInt()!!,
72-
)
73-
if(openDocumentPreferred){
74-
assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_DOCUMENTS)
75-
}else{
76-
assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_GALLERY)
71+
72+
FilePicker.openGallery(activity, mockResultLauncher, 0, openDocumentPreferred)
73+
74+
verify(mockResultLauncher).launch(intentCaptor.capture())
75+
76+
val capturedIntent = intentCaptor.firstValue
77+
78+
if (openDocumentPreferred) {
79+
assertEquals(Intent.ACTION_OPEN_DOCUMENT, capturedIntent.action)
80+
} else {
81+
assertEquals(Intent.ACTION_GET_CONTENT, capturedIntent.action)
7782
}
7883
}
7984

@@ -84,12 +89,13 @@ class FilePickerTest {
8489
`when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor)
8590
val mockApplication = mock(Application::class.java)
8691
`when`(activity.applicationContext).thenReturn(mockApplication)
87-
FilePicker.openCameraForImage(activity, 0)
88-
verify(activity).startActivityForResult(
89-
ArgumentMatchers.any(),
90-
requestCodeCaptor?.capture()?.toInt()!!,
91-
)
92-
assertEquals(requestCodeCaptor?.value, RequestCodes.TAKE_PICTURE)
92+
FilePicker.openCameraForImage(activity, mockResultLauncher, 0)
93+
94+
verify(mockResultLauncher).launch(intentCaptor.capture())
95+
96+
val capturedIntent = intentCaptor.firstValue
97+
98+
assertEquals(MediaStore.ACTION_IMAGE_CAPTURE, capturedIntent.action)
9399
}
94100

95101
@Test
@@ -183,47 +189,20 @@ class FilePickerTest {
183189
method.invoke(mockFilePicker, mockIntent)
184190
}
185191

186-
//TODO [Parry] adapt tests
187-
// @Test
188-
// fun testHandleActivityResultCaseOne() {
189-
// val mockIntent = mock(Intent::class.java)
190-
// FilePicker.handleActivityResult(
191-
// RequestCodes.FILE_PICKER_IMAGE_IDENTIFICATOR,
192-
// Activity.RESULT_OK,
193-
// mockIntent,
194-
// activity,
195-
// object : DefaultCallback() {
196-
// override fun onCanceled(
197-
// source: FilePicker.ImageSource,
198-
// type: Int,
199-
// ) {
200-
// super.onCanceled(source, type)
201-
// }
202-
//
203-
// override fun onImagePickerError(
204-
// e: Exception,
205-
// source: FilePicker.ImageSource,
206-
// type: Int,
207-
// ) {
208-
// }
209-
//
210-
// override fun onImagesPicked(
211-
// imagesFiles: List<UploadableFile>,
212-
// source: FilePicker.ImageSource,
213-
// type: Int,
214-
// ) {
215-
// }
216-
// },
217-
// )
218-
// }
219-
220192
@Test
221193
fun testOpenCustomSelectorRequestCode() {
222194
`when`(PreferenceManager.getDefaultSharedPreferences(activity)).thenReturn(sharedPref)
223195
`when`(sharedPref.edit()).thenReturn(sharedPreferencesEditor)
224196
`when`(sharedPref.edit().putInt("type", 0)).thenReturn(sharedPreferencesEditor)
225-
FilePicker.openCustomSelector(activity, 0)
226-
verify(activity).startActivityForResult(ArgumentMatchers.any(), requestCodeCaptor?.capture()?.toInt()!!)
227-
assertEquals(requestCodeCaptor?.value, RequestCodes.PICK_PICTURE_FROM_CUSTOM_SELECTOR)
197+
FilePicker.openCustomSelector(activity, mockResultLauncher, 0)
198+
199+
verify(mockResultLauncher).launch(intentCaptor.capture())
200+
201+
val capturedIntent = intentCaptor.firstValue
202+
203+
assertEquals(
204+
CustomSelectorActivity.Companion::class.java.declaringClass.name,
205+
capturedIntent.component?.className
206+
)
228207
}
229208
}

app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailFragmentUnitTests.kt

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import android.widget.ProgressBar
1919
import android.widget.ScrollView
2020
import android.widget.Spinner
2121
import android.widget.TextView
22+
import androidx.activity.result.ActivityResult
2223
import androidx.fragment.app.FragmentManager
2324
import androidx.fragment.app.FragmentTransaction
2425
import androidx.test.core.app.ApplicationProvider

app/src/test/kotlin/fr/free/nrw/commons/upload/UploadMediaDetailAdapterUnitTest.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package fr.free.nrw.commons.upload
22

33
import android.app.Dialog
44
import android.content.Context
5+
import android.content.Intent
56
import android.view.View
67
import android.widget.AdapterView
78
import android.widget.GridLayout
89
import android.widget.ListView
910
import android.widget.TextView
11+
import androidx.activity.result.ActivityResultLauncher
1012
import androidx.test.core.app.ApplicationProvider
1113
import com.nhaarman.mockitokotlin2.any
1214
import com.nhaarman.mockitokotlin2.times
@@ -67,14 +69,16 @@ class UploadMediaDetailAdapterUnitTest {
6769
@Mock
6870
private lateinit var adapterView: AdapterView<RecentLanguagesAdapter>
6971

72+
@Mock
73+
private lateinit var mockResultLauncher: ActivityResultLauncher<Intent>
74+
7075
@Before
7176
fun setUp() {
7277
MockitoAnnotations.openMocks(this)
7378
uploadMediaDetails = mutableListOf(uploadMediaDetail, uploadMediaDetail)
7479
activity = Robolectric.buildActivity(UploadActivity::class.java).get()
7580
fragment = mock(UploadMediaDetailFragment::class.java)
76-
//TODO[Parry] Adapt tests to new result api
77-
// adapter = UploadMediaDetailAdapter(fragment, "", recentLanguagesDao)
81+
adapter = UploadMediaDetailAdapter(fragment, "", recentLanguagesDao, mockResultLauncher)
7882
context = ApplicationProvider.getApplicationContext()
7983
Whitebox.setInternalState(adapter, "uploadMediaDetails", uploadMediaDetails)
8084
Whitebox.setInternalState(adapter, "eventListener", eventListener)

app/src/test/kotlin/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragmentUnitTest.kt

+14-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.view.View
1111
import android.widget.ImageView
1212
import android.widget.LinearLayout
1313
import android.widget.TextView
14+
import androidx.activity.result.ActivityResult
1415
import androidx.appcompat.widget.AppCompatButton
1516
import androidx.appcompat.widget.AppCompatImageButton
1617
import androidx.fragment.app.FragmentManager
@@ -363,7 +364,12 @@ class UploadMediaDetailFragmentUnitTest {
363364
`when`(latLng.latitude).thenReturn(0.0)
364365
`when`(latLng.longitude).thenReturn(0.0)
365366
`when`(uploadItem.gpsCoords).thenReturn(imageCoordinates)
366-
fragment.onActivityResult(1211, Activity.RESULT_OK, intent)
367+
val activityResult = ActivityResult(Activity.RESULT_OK,intent)
368+
369+
val handleResultMethod = UploadMediaDetailFragment::class.java.getDeclaredMethod("onCameraPosition", ActivityResult::class.java)
370+
handleResultMethod.isAccessible = true
371+
372+
handleResultMethod.invoke(fragment,activityResult)
367373
Mockito.verify(presenter, Mockito.times(0)).getImageQuality(0, location, activity)
368374
}
369375

@@ -387,7 +393,13 @@ class UploadMediaDetailFragmentUnitTest {
387393
`when`(latLng.latitude).thenReturn(0.0)
388394
`when`(latLng.longitude).thenReturn(0.0)
389395
`when`(uploadItem.gpsCoords).thenReturn(imageCoordinates)
390-
fragment.onActivityResult(1211, Activity.RESULT_OK, intent)
396+
397+
val activityResult = ActivityResult(Activity.RESULT_OK,intent)
398+
399+
val handleResultMethod = UploadMediaDetailFragment::class.java.getDeclaredMethod("onCameraPosition", ActivityResult::class.java)
400+
handleResultMethod.isAccessible = true
401+
402+
handleResultMethod.invoke(fragment, activityResult)
391403
Mockito.verify(presenter, Mockito.times(1)).displayLocDialog(0, null, false)
392404
}
393405

0 commit comments

Comments
 (0)