mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 04:43:54 +01:00
Fixed 4794 : Added a functionality of remembering zoom level on map (#4817)
* Fixed 4794 : Added a functionality of remembering zoom level on map * Added Required Changes * Added Required Changes * Added Required Changes * Added Required Changes * Added Required Tests for the RememberZoomLevel
This commit is contained in:
parent
755b216507
commit
863477aa02
5 changed files with 129 additions and 7 deletions
|
|
@ -0,0 +1,67 @@
|
|||
package fr.free.nrw.commons.locationpicker
|
||||
|
||||
import android.os.Looper
|
||||
import com.mapbox.mapboxsdk.camera.CameraPosition
|
||||
import com.mapbox.mapboxsdk.geometry.LatLng
|
||||
import com.mapbox.mapboxsdk.maps.MapboxMap
|
||||
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.LAST_ZOOM
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.powermock.reflect.Whitebox
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.Shadows.shadowOf
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
import java.lang.reflect.Method
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
@LooperMode(LooperMode.Mode.PAUSED)
|
||||
class LocationPickerActivityTest {
|
||||
|
||||
private lateinit var activityLocationPicker : LocationPickerActivity
|
||||
|
||||
@Mock
|
||||
private lateinit var applicationKvStore: JsonKvStore
|
||||
|
||||
@Mock
|
||||
private lateinit var mapboxMap : MapboxMap
|
||||
|
||||
|
||||
@Before
|
||||
fun setup(){
|
||||
MockitoAnnotations.initMocks(this)
|
||||
activityLocationPicker = Robolectric.buildActivity(LocationPickerActivity::class.java).get()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testRememberZoomLevel(){
|
||||
shadowOf(Looper.getMainLooper()).idle()
|
||||
Whitebox.setInternalState(activityLocationPicker,"mapboxMap",mapboxMap)
|
||||
Whitebox.setInternalState(activityLocationPicker,"activity", "NoLocationUploadActivity")
|
||||
Whitebox.setInternalState(activityLocationPicker,"applicationKvStore",applicationKvStore)
|
||||
val position = CameraPosition.Builder().target(LatLng(
|
||||
51.50550,
|
||||
-0.07520, 0.0
|
||||
)
|
||||
).zoom(15.0).build()
|
||||
`when`(mapboxMap.cameraPosition).thenReturn(position)
|
||||
val method: Method = LocationPickerActivity::class.java.getDeclaredMethod(
|
||||
"placeSelected"
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(activityLocationPicker)
|
||||
Mockito.verify(applicationKvStore,Mockito.times(1))
|
||||
.putString(LAST_ZOOM,position.zoom.toString())
|
||||
}
|
||||
}
|
||||
|
|
@ -21,6 +21,7 @@ import com.mapbox.mapboxsdk.camera.CameraPosition
|
|||
import com.mapbox.mapboxsdk.geometry.LatLng
|
||||
import com.nhaarman.mockitokotlin2.mock
|
||||
import fr.free.nrw.commons.LocationPicker.LocationPicker
|
||||
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
|
|
@ -30,6 +31,7 @@ import fr.free.nrw.commons.upload.ImageCoordinates
|
|||
import fr.free.nrw.commons.upload.UploadActivity
|
||||
import fr.free.nrw.commons.upload.UploadItem
|
||||
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
||||
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.LAST_ZOOM
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
|
@ -43,8 +45,11 @@ 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.robolectric.shadows.ShadowActivity
|
||||
import org.robolectric.shadows.ShadowIntent
|
||||
import org.wikipedia.AppAdapter
|
||||
import java.lang.reflect.Method
|
||||
|
||||
|
|
@ -98,6 +103,8 @@ class UploadMediaDetailFragmentUnitTest {
|
|||
@Mock
|
||||
private lateinit var imageCoordinates: ImageCoordinates
|
||||
|
||||
private lateinit var activity: UploadActivity
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
|
|
@ -105,7 +112,7 @@ class UploadMediaDetailFragmentUnitTest {
|
|||
context = RuntimeEnvironment.application.applicationContext
|
||||
AppAdapter.set(TestAppAdapter())
|
||||
|
||||
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
||||
activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
|
||||
layoutInflater = LayoutInflater.from(activity)
|
||||
|
||||
view = LayoutInflater.from(activity)
|
||||
|
|
@ -342,10 +349,11 @@ class UploadMediaDetailFragmentUnitTest {
|
|||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testShowExternalMap() {
|
||||
Shadows.shadowOf(Looper.getMainLooper()).idle()
|
||||
shadowOf(Looper.getMainLooper()).idle()
|
||||
`when`(uploadItem.gpsCoords).thenReturn(imageCoordinates)
|
||||
`when`(imageCoordinates.decLatitude).thenReturn(0.0)
|
||||
`when`(imageCoordinates.decLongitude).thenReturn(0.0)
|
||||
`when`(imageCoordinates.zoomLevel).thenReturn(16.0)
|
||||
fragment.showExternalMap(uploadItem)
|
||||
}
|
||||
|
||||
|
|
@ -431,4 +439,37 @@ class UploadMediaDetailFragmentUnitTest {
|
|||
fragment.displayAddLocationDialog(runnable)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testRememberedZoomLevelOnNull(){
|
||||
shadowOf(Looper.getMainLooper()).idle()
|
||||
Whitebox.setInternalState(fragment, "defaultKvStore", defaultKvStore)
|
||||
`when`(uploadItem.gpsCoords).thenReturn(null)
|
||||
`when`(defaultKvStore.getString(LAST_ZOOM)).thenReturn("13.0")
|
||||
fragment.showExternalMap(uploadItem)
|
||||
Mockito.verify(uploadItem,Mockito.times(1)).gpsCoords
|
||||
Mockito.verify(defaultKvStore,Mockito.times(2)).getString(LAST_ZOOM)
|
||||
val shadowActivity: ShadowActivity = shadowOf(activity)
|
||||
val startedIntent = shadowActivity.nextStartedActivity
|
||||
val shadowIntent: ShadowIntent = shadowOf(startedIntent)
|
||||
Assert.assertEquals(shadowIntent.intentClass, LocationPickerActivity::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testRememberedZoomLevelOnNotNull(){
|
||||
shadowOf(Looper.getMainLooper()).idle()
|
||||
`when`(uploadItem.gpsCoords).thenReturn(imageCoordinates)
|
||||
`when`(imageCoordinates.decLatitude).thenReturn(8.0)
|
||||
`when`(imageCoordinates.decLongitude).thenReturn(-8.0)
|
||||
`when`(imageCoordinates.zoomLevel).thenReturn(14.0)
|
||||
`when`(defaultKvStore.getString(LAST_ZOOM)).thenReturn(null)
|
||||
fragment.showExternalMap(uploadItem)
|
||||
Mockito.verify(uploadItem.gpsCoords,Mockito.times(1)).zoomLevel
|
||||
val shadowActivity: ShadowActivity = shadowOf(activity)
|
||||
val startedIntent = shadowActivity.nextStartedActivity
|
||||
val shadowIntent: ShadowIntent = shadowOf(startedIntent)
|
||||
Assert.assertEquals(shadowIntent.intentClass, LocationPickerActivity::class.java)
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue