Fix unit tests.

This commit is contained in:
Onuray Sahin 2022-05-30 19:21:57 +03:00
parent 84b3d5520c
commit 353f290f0c
2 changed files with 33 additions and 4 deletions

View File

@ -21,7 +21,10 @@ import im.vector.app.features.location.LocationData
import im.vector.app.features.location.LocationSharingServiceConnection import im.vector.app.features.location.LocationSharingServiceConnection
import im.vector.app.test.test import im.vector.app.test.test
import io.mockk.every import io.mockk.every
import io.mockk.just
import io.mockk.mockk import io.mockk.mockk
import io.mockk.runs
import io.mockk.verify
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Rule import org.junit.Rule
@ -60,7 +63,7 @@ class LocationLiveMapViewModelTest {
showStopSharingButton = false showStopSharingButton = false
) )
) )
every { locationServiceConnection.bind(any()) } just runs
every { getListOfUserLiveLocationUseCase.execute(fakeRoomId) } returns flowOf(userLocations) every { getListOfUserLiveLocationUseCase.execute(fakeRoomId) } returns flowOf(userLocations)
val viewModel = createViewModel() val viewModel = createViewModel()
@ -72,5 +75,7 @@ class LocationLiveMapViewModelTest {
) )
) )
.finish() .finish()
verify { locationServiceConnection.bind(viewModel) }
} }
} }

View File

@ -21,18 +21,28 @@ import im.vector.app.features.location.LocationData
import im.vector.app.test.fakes.FakeActiveSessionHolder import im.vector.app.test.fakes.FakeActiveSessionHolder
import im.vector.app.test.fakes.FakeLocationPinProvider import im.vector.app.test.fakes.FakeLocationPinProvider
import im.vector.app.test.fakes.FakeSession import im.vector.app.test.fakes.FakeSession
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.shouldBeEqualTo 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.getUser
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
import org.matrix.android.sdk.api.session.user.model.User
import org.matrix.android.sdk.api.util.MatrixItem import org.matrix.android.sdk.api.util.MatrixItem
import org.matrix.android.sdk.api.util.toMatrixItem
private const val A_USER_ID = "@aUserId:matrix.org" private const val A_USER_ID = "@aUserId:matrix.org"
private const val A_USER_DISPLAY_NAME = "A_USER_DISPLAY_NAME"
private const val A_IS_ACTIVE = true private const val A_IS_ACTIVE = true
private const val A_END_OF_LIVE_TIMESTAMP = 123L private const val A_END_OF_LIVE_TIMESTAMP = 123L
private const val A_LOCATION_TIMESTAMP = 122L
private const val A_LATITUDE = 40.05 private const val A_LATITUDE = 40.05
private const val A_LONGITUDE = 29.24 private const val A_LONGITUDE = 29.24
private const val A_UNCERTAINTY = 30.0 private const val A_UNCERTAINTY = 30.0
@ -46,6 +56,19 @@ class UserLiveLocationViewStateMapperTest {
private val userLiveLocationViewStateMapper = UserLiveLocationViewStateMapper(locationPinProvider.instance, fakeActiveSessionHolder.instance) private val userLiveLocationViewStateMapper = UserLiveLocationViewStateMapper(locationPinProvider.instance, fakeActiveSessionHolder.instance)
@Before
fun setup() {
mockkStatic("org.matrix.android.sdk.api.util.MatrixItemKt")
val fakeUser = mockk<User>()
every { fakeSession.getUser(A_USER_ID) } returns fakeUser
every { fakeUser.toMatrixItem() } returns MatrixItem.UserItem(id = A_USER_ID, displayName = A_USER_DISPLAY_NAME, avatarUrl = "")
}
@After
fun tearDown() {
unmockkStatic("org.matrix.android.sdk.api.util.MatrixItemKt")
}
@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(
@ -71,7 +94,8 @@ class UserLiveLocationViewStateMapperTest {
val pinDrawable = mockk<Drawable>() val pinDrawable = mockk<Drawable>()
val locationDataContent = MessageBeaconLocationDataContent( val locationDataContent = MessageBeaconLocationDataContent(
locationInfo = LocationInfo(geoUri = A_GEO_URI) locationInfo = LocationInfo(geoUri = A_GEO_URI),
unstableTimestampMillis = A_LOCATION_TIMESTAMP
) )
val summary = LiveLocationShareAggregatedSummary( val summary = LiveLocationShareAggregatedSummary(
userId = A_USER_ID, userId = A_USER_ID,
@ -84,7 +108,7 @@ class UserLiveLocationViewStateMapperTest {
val viewState = userLiveLocationViewStateMapper.map(summary) val viewState = userLiveLocationViewStateMapper.map(summary)
val expectedViewState = UserLiveLocationViewState( val expectedViewState = UserLiveLocationViewState(
matrixItem = MatrixItem.UserItem(id = A_USER_ID, displayName = "User 2", avatarUrl = ""), matrixItem = MatrixItem.UserItem(id = A_USER_ID, displayName = A_USER_DISPLAY_NAME, avatarUrl = ""),
pinDrawable = pinDrawable, pinDrawable = pinDrawable,
locationData = LocationData( locationData = LocationData(
latitude = A_LATITUDE, latitude = A_LATITUDE,
@ -92,7 +116,7 @@ class UserLiveLocationViewStateMapperTest {
uncertainty = A_UNCERTAINTY uncertainty = A_UNCERTAINTY
), ),
endOfLiveTimestampMillis = A_END_OF_LIVE_TIMESTAMP, endOfLiveTimestampMillis = A_END_OF_LIVE_TIMESTAMP,
locationTimestampMillis = A_END_OF_LIVE_TIMESTAMP, locationTimestampMillis = A_LOCATION_TIMESTAMP,
showStopSharingButton = false showStopSharingButton = false
) )
viewState shouldBeEqualTo expectedViewState viewState shouldBeEqualTo expectedViewState