Adds a 'Remove Location' button to the UploadWizard #5247 (#5672)

* Implemented basic flow to remove location

* Fixed and added new tests and enhanced UX
This commit is contained in:
Shashwat Kedia 2024-03-30 20:04:55 +05:30 committed by GitHub
parent 7dd00efa64
commit 0a6257b27b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 150 additions and 21 deletions

View file

@ -2,7 +2,6 @@ package fr.free.nrw.commons.locationpicker
import android.content.Context
import android.os.Looper
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.ImageView
@ -11,10 +10,8 @@ import androidx.appcompat.widget.AppCompatTextView
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.CameraPosition
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.LAST_LOCATION
@ -29,7 +26,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.*
import org.mockito.MockitoAnnotations
import org.osmdroid.api.IMapController
import org.osmdroid.util.GeoPoint
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
@ -38,7 +34,6 @@ import org.robolectric.RuntimeEnvironment
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import java.lang.reflect.InvocationTargetException
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -61,6 +56,9 @@ class LocationPickerActivityUnitTests {
@Mock
private lateinit var modifyLocationButton: Button
@Mock
private lateinit var removeLocationButton: Button
@Mock
private lateinit var placeSelectedButton: FloatingActionButton
@ -96,6 +94,7 @@ class LocationPickerActivityUnitTests {
Whitebox.setInternalState(activity, "applicationKvStore", applicationKvStore)
Whitebox.setInternalState(activity, "cameraPosition", cameraPosition)
Whitebox.setInternalState(activity, "modifyLocationButton", modifyLocationButton)
Whitebox.setInternalState(activity, "removeLocationButton", removeLocationButton)
Whitebox.setInternalState(activity, "placeSelectedButton", placeSelectedButton)
Whitebox.setInternalState(activity, "showInMapButton", showInMapButton)
Whitebox.setInternalState(activity, "markerImage", markerImage)
@ -134,6 +133,7 @@ class LocationPickerActivityUnitTests {
method.invoke(activity)
verify(placeSelectedButton, times(1)).visibility = View.VISIBLE
verify(modifyLocationButton, times(1)).visibility = View.GONE
verify(removeLocationButton, times(1)).visibility = View.GONE
verify(showInMapButton, times(1)).visibility = View.GONE
verify(markerImage, times(1)).visibility = View.VISIBLE
verify(shadow, times(1)).visibility = View.VISIBLE
@ -142,6 +142,16 @@ class LocationPickerActivityUnitTests {
verify(fabCenterOnLocation, times(1)).visibility = View.VISIBLE
}
@Test
@Throws(Exception::class)
fun testOnClickRemoveLocation() {
val method: Method = LocationPickerActivity::class.java.getDeclaredMethod(
"onClickRemoveLocation"
)
method.isAccessible = true
method.invoke(activity)
}
@Test
@Throws(Exception::class)
fun testPlaceSelected() {

View file

@ -382,7 +382,7 @@ class UploadMediaDetailFragmentUnitTest {
`when`(latLng.longitude).thenReturn(0.0)
`when`(uploadItem.gpsCoords).thenReturn(imageCoordinates)
fragment.onActivityResult(1211, Activity.RESULT_OK, intent)
Mockito.verify(presenter, Mockito.times(1)).displayLocDialog(0, null)
Mockito.verify(presenter, Mockito.times(1)).displayLocDialog(0, null, false)
}
@Test