From 353f290f0c2e4c7212226f121b444e4932473664 Mon Sep 17 00:00:00 2001 From: Onuray Sahin Date: Mon, 30 May 2022 19:21:57 +0300 Subject: [PATCH] Fix unit tests. --- .../live/map/LocationLiveMapViewModelTest.kt | 7 ++++- .../UserLiveLocationViewStateMapperTest.kt | 30 +++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/vector/src/test/java/im/vector/app/features/location/live/map/LocationLiveMapViewModelTest.kt b/vector/src/test/java/im/vector/app/features/location/live/map/LocationLiveMapViewModelTest.kt index 2a5fac4cdd..b477265506 100644 --- a/vector/src/test/java/im/vector/app/features/location/live/map/LocationLiveMapViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/location/live/map/LocationLiveMapViewModelTest.kt @@ -21,7 +21,10 @@ import im.vector.app.features.location.LocationData import im.vector.app.features.location.LocationSharingServiceConnection import im.vector.app.test.test import io.mockk.every +import io.mockk.just import io.mockk.mockk +import io.mockk.runs +import io.mockk.verify import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -60,7 +63,7 @@ class LocationLiveMapViewModelTest { showStopSharingButton = false ) ) - + every { locationServiceConnection.bind(any()) } just runs every { getListOfUserLiveLocationUseCase.execute(fakeRoomId) } returns flowOf(userLocations) val viewModel = createViewModel() @@ -72,5 +75,7 @@ class LocationLiveMapViewModelTest { ) ) .finish() + + verify { locationServiceConnection.bind(viewModel) } } } diff --git a/vector/src/test/java/im/vector/app/features/location/live/map/UserLiveLocationViewStateMapperTest.kt b/vector/src/test/java/im/vector/app/features/location/live/map/UserLiveLocationViewStateMapperTest.kt index 88457d18b5..95e0ff1b0b 100644 --- a/vector/src/test/java/im/vector/app/features/location/live/map/UserLiveLocationViewStateMapperTest.kt +++ b/vector/src/test/java/im/vector/app/features/location/live/map/UserLiveLocationViewStateMapperTest.kt @@ -21,18 +21,28 @@ import im.vector.app.features.location.LocationData import im.vector.app.test.fakes.FakeActiveSessionHolder import im.vector.app.test.fakes.FakeLocationPinProvider import im.vector.app.test.fakes.FakeSession +import io.mockk.every import io.mockk.mockk +import io.mockk.mockkStatic +import io.mockk.unmockkStatic import kotlinx.coroutines.test.runTest import org.amshove.kluent.shouldBeEqualTo +import org.junit.After +import org.junit.Before 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.message.LocationInfo 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.toMatrixItem 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_END_OF_LIVE_TIMESTAMP = 123L +private const val A_LOCATION_TIMESTAMP = 122L private const val A_LATITUDE = 40.05 private const val A_LONGITUDE = 29.24 private const val A_UNCERTAINTY = 30.0 @@ -46,6 +56,19 @@ class UserLiveLocationViewStateMapperTest { private val userLiveLocationViewStateMapper = UserLiveLocationViewStateMapper(locationPinProvider.instance, fakeActiveSessionHolder.instance) + @Before + fun setup() { + mockkStatic("org.matrix.android.sdk.api.util.MatrixItemKt") + val fakeUser = mockk() + 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 fun `given a summary with invalid data then result is null`() = runTest { val summary1 = LiveLocationShareAggregatedSummary( @@ -71,7 +94,8 @@ class UserLiveLocationViewStateMapperTest { val pinDrawable = mockk() val locationDataContent = MessageBeaconLocationDataContent( - locationInfo = LocationInfo(geoUri = A_GEO_URI) + locationInfo = LocationInfo(geoUri = A_GEO_URI), + unstableTimestampMillis = A_LOCATION_TIMESTAMP ) val summary = LiveLocationShareAggregatedSummary( userId = A_USER_ID, @@ -84,7 +108,7 @@ class UserLiveLocationViewStateMapperTest { val viewState = userLiveLocationViewStateMapper.map(summary) 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, locationData = LocationData( latitude = A_LATITUDE, @@ -92,7 +116,7 @@ class UserLiveLocationViewStateMapperTest { uncertainty = A_UNCERTAINTY ), endOfLiveTimestampMillis = A_END_OF_LIVE_TIMESTAMP, - locationTimestampMillis = A_END_OF_LIVE_TIMESTAMP, + locationTimestampMillis = A_LOCATION_TIMESTAMP, showStopSharingButton = false ) viewState shouldBeEqualTo expectedViewState