@@ -29,6 +29,7 @@ import io.element.android.features.location.impl.live.LiveLocationStore
2929import io.element.android.features.location.test.FakeActiveLiveLocationShareManager
3030import io.element.android.features.messages.test.FakeMessageComposerContext
3131import io.element.android.libraries.dateformatter.test.FakeDurationFormatter
32+ import io.element.android.libraries.featureflag.api.FeatureFlags
3233import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
3334import io.element.android.libraries.matrix.api.core.EventId
3435import io.element.android.libraries.matrix.api.core.RoomId
@@ -40,6 +41,7 @@ import io.element.android.libraries.matrix.api.room.location.AssetType
4041import io.element.android.libraries.matrix.api.timeline.Timeline
4142import io.element.android.libraries.matrix.test.A_ROOM_ID
4243import io.element.android.libraries.matrix.test.A_SESSION_ID
44+ import io.element.android.libraries.matrix.test.A_THREAD_ID
4345import io.element.android.libraries.matrix.test.A_USER_ID
4446import io.element.android.libraries.matrix.test.FakeMatrixClient
4547import io.element.android.libraries.matrix.test.core.aBuildMeta
@@ -82,13 +84,14 @@ class ShareLocationPresenterTest {
8284
8385 private fun TestScope.createShareLocationPresenter (
8486 joinedRoom : JoinedRoom = FakeJoinedRoom (),
87+ timelineMode : Timeline .Mode = Timeline .Mode .Live ,
8588 locationActions : FakeLocationActions = fakeLocationActions,
8689 liveLocationShareManager : FakeActiveLiveLocationShareManager = FakeActiveLiveLocationShareManager (),
8790 liveLocationStore : LiveLocationStore = createLiveLocationStore(sessionId = joinedRoom.sessionId),
8891 ): ShareLocationPresenter = ShareLocationPresenter (
8992 permissionsPresenterFactory = { fakePermissionsPresenter },
9093 room = joinedRoom,
91- timelineMode = Timeline . Mode . Live ,
94+ timelineMode = timelineMode ,
9295 analyticsService = fakeAnalyticsService,
9396 messageComposerContext = fakeMessageComposerContext,
9497 locationActions = locationActions,
@@ -653,6 +656,45 @@ class ShareLocationPresenterTest {
653656 cancelAndIgnoreRemainingEvents()
654657 }
655658 }
659+
660+ @Test
661+ fun `canShareLiveLocation is false when the feature is disabled` () = runTest {
662+ fakeFeatureFlagService.setFeatureEnabled(FeatureFlags .LiveLocationSharing , false )
663+ val shareLocationPresenter = createShareLocationPresenter(
664+ timelineMode = Timeline .Mode .Live ,
665+ )
666+ shareLocationPresenter.test {
667+ skipItems(1 )
668+ val state = awaitItem()
669+ assertThat(state.canShareLiveLocation).isFalse()
670+ }
671+ }
672+
673+ @Test
674+ fun `canShareLiveLocation is true when the feature is enabled` () = runTest {
675+ fakeFeatureFlagService.setFeatureEnabled(FeatureFlags .LiveLocationSharing , true )
676+ val shareLocationPresenter = createShareLocationPresenter(
677+ timelineMode = Timeline .Mode .Live ,
678+ )
679+ shareLocationPresenter.test {
680+ skipItems(1 )
681+ val state = awaitItem()
682+ assertThat(state.canShareLiveLocation).isTrue()
683+ }
684+ }
685+
686+ @Test
687+ fun `canShareLiveLocation is false in thread timeline` () = runTest {
688+ fakeFeatureFlagService.setFeatureEnabled(FeatureFlags .LiveLocationSharing , true )
689+ val shareLocationPresenter = createShareLocationPresenter(
690+ timelineMode = Timeline .Mode .Thread (A_THREAD_ID ),
691+ )
692+ shareLocationPresenter.test {
693+ skipItems(1 )
694+ val state = awaitItem()
695+ assertThat(state.canShareLiveLocation).isFalse()
696+ }
697+ }
656698}
657699
658700private fun createLiveLocationStore (
0 commit comments