Improving view state mapper
This commit is contained in:
parent
066c540eb7
commit
7f2279c8a8
|
@ -18,37 +18,29 @@ package im.vector.app.features.location.live.map
|
||||||
|
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import im.vector.app.features.location.LocationData
|
import im.vector.app.features.location.LocationData
|
||||||
import im.vector.app.features.location.toLocationData
|
|
||||||
import im.vector.app.test.fakes.FakeLocationPinProvider
|
import im.vector.app.test.fakes.FakeLocationPinProvider
|
||||||
import io.mockk.every
|
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.mockkStatic
|
|
||||||
import io.mockk.unmockkStatic
|
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.amshove.kluent.internal.assertEquals
|
import org.amshove.kluent.shouldBeEqualTo
|
||||||
import org.junit.After
|
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.matrix.android.sdk.api.session.room.model.livelocation.LiveLocationShareAggregatedSummary
|
import org.matrix.android.sdk.api.session.room.model.livelocation.LiveLocationShareAggregatedSummary
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.LocationInfo
|
import org.matrix.android.sdk.api.session.room.model.message.LocationInfo
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconLocationDataContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconLocationDataContent
|
||||||
|
|
||||||
|
private const val A_USER_ID = "aUserId"
|
||||||
|
private const val A_IS_ACTIVE = true
|
||||||
|
private const val A_END_OF_LIVE_TIMESTAMP = 123L
|
||||||
|
private const val A_LATITUDE = 40.05
|
||||||
|
private const val A_LONGITUDE = 29.24
|
||||||
|
private const val A_UNCERTAINTY = 30.0
|
||||||
|
private const val A_GEO_URI = "geo:$A_LATITUDE,$A_LONGITUDE;$A_UNCERTAINTY"
|
||||||
|
|
||||||
class UserLiveLocationViewStateMapperTest {
|
class UserLiveLocationViewStateMapperTest {
|
||||||
|
|
||||||
private val locationPinProvider = FakeLocationPinProvider()
|
private val locationPinProvider = FakeLocationPinProvider()
|
||||||
|
|
||||||
private val userLiveLocationViewStateMapper = UserLiveLocationViewStateMapper(locationPinProvider.instance)
|
private val userLiveLocationViewStateMapper = UserLiveLocationViewStateMapper(locationPinProvider.instance)
|
||||||
|
|
||||||
@Before
|
|
||||||
fun setUp() {
|
|
||||||
mockkStatic("im.vector.app.features.location.LocationDataKt")
|
|
||||||
}
|
|
||||||
|
|
||||||
@After
|
|
||||||
fun tearDown() {
|
|
||||||
unmockkStatic("im.vector.app.features.location.LocationDataKt")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `given a summary with invalid data then result is null`() = runTest {
|
fun `given a summary with invalid data then result is null`() = runTest {
|
||||||
val summary1 = LiveLocationShareAggregatedSummary(
|
val summary1 = LiveLocationShareAggregatedSummary(
|
||||||
|
@ -58,49 +50,44 @@ class UserLiveLocationViewStateMapperTest {
|
||||||
lastLocationDataContent = null,
|
lastLocationDataContent = null,
|
||||||
)
|
)
|
||||||
val summary2 = summary1.copy(userId = "")
|
val summary2 = summary1.copy(userId = "")
|
||||||
val summaryWithoutLocation = summary1.copy(userId = "userId")
|
val summaryWithoutLocation = summary1.copy(userId = A_USER_ID)
|
||||||
|
|
||||||
val viewState1 = userLiveLocationViewStateMapper.map(summary1)
|
val viewState1 = userLiveLocationViewStateMapper.map(summary1)
|
||||||
val viewState2 = userLiveLocationViewStateMapper.map(summary2)
|
val viewState2 = userLiveLocationViewStateMapper.map(summary2)
|
||||||
val viewState3 = userLiveLocationViewStateMapper.map(summaryWithoutLocation)
|
val viewState3 = userLiveLocationViewStateMapper.map(summaryWithoutLocation)
|
||||||
|
|
||||||
assertEquals(null, viewState1)
|
viewState1 shouldBeEqualTo null
|
||||||
assertEquals(null, viewState2)
|
viewState2 shouldBeEqualTo null
|
||||||
assertEquals(null, viewState3)
|
viewState3 shouldBeEqualTo null
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `given a summary with valid data then result is correctly mapped`() = runTest {
|
fun `given a summary with valid data then result is correctly mapped`() = runTest {
|
||||||
val geoUri = "geoUri"
|
|
||||||
val userId = "userId"
|
|
||||||
val pinDrawable = mockk<Drawable>()
|
val pinDrawable = mockk<Drawable>()
|
||||||
val endOfLiveTimestampMillis = 123L
|
|
||||||
|
|
||||||
val locationDataContent = MessageBeaconLocationDataContent(
|
val locationDataContent = MessageBeaconLocationDataContent(
|
||||||
locationInfo = LocationInfo(geoUri = geoUri)
|
locationInfo = LocationInfo(geoUri = A_GEO_URI)
|
||||||
)
|
)
|
||||||
val summary = LiveLocationShareAggregatedSummary(
|
val summary = LiveLocationShareAggregatedSummary(
|
||||||
userId = userId,
|
userId = A_USER_ID,
|
||||||
isActive = true,
|
isActive = A_IS_ACTIVE,
|
||||||
endOfLiveTimestampMillis = endOfLiveTimestampMillis,
|
endOfLiveTimestampMillis = A_END_OF_LIVE_TIMESTAMP,
|
||||||
lastLocationDataContent = locationDataContent,
|
lastLocationDataContent = locationDataContent,
|
||||||
)
|
)
|
||||||
val locationData = LocationData(
|
locationPinProvider.givenCreateForUserId(A_USER_ID, pinDrawable)
|
||||||
latitude = 1.0,
|
|
||||||
longitude = 2.0,
|
|
||||||
uncertainty = null
|
|
||||||
)
|
|
||||||
every { geoUri.toLocationData() } returns locationData
|
|
||||||
locationPinProvider.givenCreateForUserId(userId, pinDrawable)
|
|
||||||
|
|
||||||
val viewState = userLiveLocationViewStateMapper.map(summary)
|
val viewState = userLiveLocationViewStateMapper.map(summary)
|
||||||
|
|
||||||
val expectedViewState = UserLiveLocationViewState(
|
val expectedViewState = UserLiveLocationViewState(
|
||||||
userId = userId,
|
userId = A_USER_ID,
|
||||||
pinDrawable = pinDrawable,
|
pinDrawable = pinDrawable,
|
||||||
locationData = locationData,
|
locationData = LocationData(
|
||||||
endOfLiveTimestampMillis = endOfLiveTimestampMillis
|
latitude = A_LATITUDE,
|
||||||
|
longitude = A_LONGITUDE,
|
||||||
|
uncertainty = A_UNCERTAINTY
|
||||||
|
),
|
||||||
|
endOfLiveTimestampMillis = A_END_OF_LIVE_TIMESTAMP
|
||||||
)
|
)
|
||||||
assertEquals(expectedViewState, viewState)
|
viewState shouldBeEqualTo expectedViewState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue