Skip to content

Commit 8c8f142

Browse files
committed
Add missing tests on DefaultAnnouncementService
1 parent e31cc9b commit 8c8f142

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

features/announcement/impl/src/test/kotlin/io/element/android/features/announcement/impl/DefaultAnnouncementServiceTest.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package io.element.android.features.announcement.impl
99

10+
import app.cash.turbine.test
1011
import com.google.common.truth.Truth.assertThat
1112
import io.element.android.features.announcement.api.Announcement
1213
import io.element.android.features.announcement.impl.spaces.SpaceAnnouncementState
@@ -36,6 +37,41 @@ class DefaultAnnouncementServiceTest {
3637
assertThat(announcementStore.announcementStatusFlow(Announcement.Space).first()).isEqualTo(AnnouncementStatus.Shown)
3738
}
3839

40+
@Test
41+
fun `when showing NewNotificationSound announcement, announcement is set to show even if it was already shown`() = runTest {
42+
val announcementStore = InMemoryAnnouncementStore()
43+
val sut = createDefaultAnnouncementService(
44+
announcementStore = announcementStore,
45+
)
46+
assertThat(announcementStore.announcementStatusFlow(Announcement.NewNotificationSound).first()).isEqualTo(AnnouncementStatus.NeverShown)
47+
sut.showAnnouncement(Announcement.NewNotificationSound)
48+
assertThat(announcementStore.announcementStatusFlow(Announcement.NewNotificationSound).first()).isEqualTo(AnnouncementStatus.Show)
49+
// Simulate user close the announcement
50+
sut.onAnnouncementDismissed(Announcement.NewNotificationSound)
51+
// Calling again showAnnouncement should set it back to Show
52+
sut.showAnnouncement(Announcement.NewNotificationSound)
53+
assertThat(announcementStore.announcementStatusFlow(Announcement.NewNotificationSound).first()).isEqualTo(AnnouncementStatus.Show)
54+
}
55+
56+
@Test
57+
fun `test announcementsToShowFlow`() = runTest {
58+
val announcementStore = InMemoryAnnouncementStore()
59+
val sut = createDefaultAnnouncementService(
60+
announcementStore = announcementStore,
61+
)
62+
sut.announcementsToShowFlow().test {
63+
assertThat(awaitItem()).isEmpty()
64+
announcementStore.setAnnouncementStatus(Announcement.Space, AnnouncementStatus.Show)
65+
assertThat(awaitItem()).containsExactly(Announcement.Space)
66+
announcementStore.setAnnouncementStatus(Announcement.NewNotificationSound, AnnouncementStatus.Show)
67+
assertThat(awaitItem()).containsExactly(Announcement.Space, Announcement.NewNotificationSound)
68+
announcementStore.setAnnouncementStatus(Announcement.Space, AnnouncementStatus.Shown)
69+
assertThat(awaitItem()).containsExactly(Announcement.NewNotificationSound)
70+
announcementStore.setAnnouncementStatus(Announcement.NewNotificationSound, AnnouncementStatus.Shown)
71+
assertThat(awaitItem()).isEmpty()
72+
}
73+
}
74+
3975
private fun createDefaultAnnouncementService(
4076
announcementStore: AnnouncementStore = InMemoryAnnouncementStore(),
4177
announcementPresenter: Presenter<AnnouncementState> = Presenter { anAnnouncementState() },

0 commit comments

Comments
 (0)