@@ -30,26 +30,30 @@ import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiable
3030import io.element.android.libraries.push.impl.notifications.fixtures.aSimpleNotifiableEvent
3131import io.element.android.libraries.push.impl.notifications.fixtures.anInviteNotifiableEvent
3232import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent
33- import io.element.android.services.appnavstate.test.anAppNavigationState
33+ import io.element.android.services.appnavstate.api.NavigationState
34+ import io.element.android.services.appnavstate.api.AppNavigationState
35+ import io.element.android.services.appnavstate.test.FakeAppNavigationStateService
36+ import io.element.android.services.appnavstate.test.aNavigationState
37+ import kotlinx.coroutines.flow.MutableStateFlow
3438import org.junit.Test
3539
36- private val NOT_VIEWING_A_ROOM = anAppNavigationState ()
37- private val VIEWING_A_ROOM = anAppNavigationState (A_SESSION_ID , A_SPACE_ID , A_ROOM_ID )
38- private val VIEWING_A_THREAD = anAppNavigationState (A_SESSION_ID , A_SPACE_ID , A_ROOM_ID , A_THREAD_ID )
40+ private val NOT_VIEWING_A_ROOM = aNavigationState ()
41+ private val VIEWING_A_ROOM = aNavigationState (A_SESSION_ID , A_SPACE_ID , A_ROOM_ID )
42+ private val VIEWING_A_THREAD = aNavigationState (A_SESSION_ID , A_SPACE_ID , A_ROOM_ID , A_THREAD_ID )
3943
4044class NotifiableEventProcessorTest {
4145
4246 private val outdatedDetector = FakeOutdatedEventDetector ()
43- private val eventProcessor = NotifiableEventProcessor (outdatedDetector.instance)
4447
4548 @Test
4649 fun `given simple events when processing then keep simple events` () {
4750 val events = listOf (
4851 aSimpleNotifiableEvent(eventId = AN_EVENT_ID ),
4952 aSimpleNotifiableEvent(eventId = AN_EVENT_ID_2 )
5053 )
54+ val eventProcessor = createProcessor(navigationState = NOT_VIEWING_A_ROOM )
5155
52- val result = eventProcessor.process(events, appNavigationState = NOT_VIEWING_A_ROOM , renderedEvents = emptyList())
56+ val result = eventProcessor.process(events, renderedEvents = emptyList())
5357
5458 assertThat(result).isEqualTo(
5559 listOfProcessedEvents(
@@ -62,8 +66,9 @@ class NotifiableEventProcessorTest {
6266 @Test
6367 fun `given redacted simple event when processing then remove redaction event` () {
6468 val events = listOf (aSimpleNotifiableEvent(eventId = AN_EVENT_ID , type = EventType .REDACTION ))
69+ val eventProcessor = createProcessor(navigationState = NOT_VIEWING_A_ROOM )
6570
66- val result = eventProcessor.process(events, appNavigationState = NOT_VIEWING_A_ROOM , renderedEvents = emptyList())
71+ val result = eventProcessor.process(events, renderedEvents = emptyList())
6772
6873 assertThat(result).isEqualTo(
6974 listOfProcessedEvents(
@@ -78,8 +83,9 @@ class NotifiableEventProcessorTest {
7883 anInviteNotifiableEvent(roomId = A_ROOM_ID ),
7984 anInviteNotifiableEvent(roomId = A_ROOM_ID_2 )
8085 )
86+ val eventProcessor = createProcessor(navigationState = NOT_VIEWING_A_ROOM )
8187
82- val result = eventProcessor.process(events, appNavigationState = NOT_VIEWING_A_ROOM , renderedEvents = emptyList())
88+ val result = eventProcessor.process(events, renderedEvents = emptyList())
8389
8490 assertThat(result).isEqualTo(
8591 listOfProcessedEvents(
@@ -94,7 +100,9 @@ class NotifiableEventProcessorTest {
94100 val events = listOf (aNotifiableMessageEvent(eventId = AN_EVENT_ID , roomId = A_ROOM_ID ))
95101 outdatedDetector.givenEventIsOutOfDate(events[0 ])
96102
97- val result = eventProcessor.process(events, appNavigationState = NOT_VIEWING_A_ROOM , renderedEvents = emptyList())
103+ val eventProcessor = createProcessor(navigationState = NOT_VIEWING_A_ROOM )
104+
105+ val result = eventProcessor.process(events, renderedEvents = emptyList())
98106
99107 assertThat(result).isEqualTo(
100108 listOfProcessedEvents(
@@ -107,8 +115,9 @@ class NotifiableEventProcessorTest {
107115 fun `given in date message event when processing then keep message event` () {
108116 val events = listOf (aNotifiableMessageEvent(eventId = AN_EVENT_ID , roomId = A_ROOM_ID ))
109117 outdatedDetector.givenEventIsInDate(events[0 ])
118+ val eventProcessor = createProcessor(navigationState = NOT_VIEWING_A_ROOM )
110119
111- val result = eventProcessor.process(events, appNavigationState = NOT_VIEWING_A_ROOM , renderedEvents = emptyList())
120+ val result = eventProcessor.process(events, renderedEvents = emptyList())
112121
113122 assertThat(result).isEqualTo(
114123 listOfProcessedEvents(
@@ -121,8 +130,9 @@ class NotifiableEventProcessorTest {
121130 fun `given viewing the same room main timeline when processing main timeline message event then removes message` () {
122131 val events = listOf (aNotifiableMessageEvent(eventId = AN_EVENT_ID , roomId = A_ROOM_ID , threadId = null ))
123132 events.forEach { outdatedDetector.givenEventIsOutOfDate(it) }
133+ val eventProcessor = createProcessor(isInForeground = true , navigationState = VIEWING_A_ROOM )
124134
125- val result = eventProcessor.process(events, VIEWING_A_ROOM , renderedEvents = emptyList())
135+ val result = eventProcessor.process(events, renderedEvents = emptyList())
126136
127137 assertThat(result).isEqualTo(
128138 listOfProcessedEvents(
@@ -135,8 +145,9 @@ class NotifiableEventProcessorTest {
135145 fun `given viewing the same thread timeline when processing thread message event then removes message` () {
136146 val events = listOf (aNotifiableMessageEvent(eventId = AN_EVENT_ID , roomId = A_ROOM_ID , threadId = A_THREAD_ID ))
137147 events.forEach { outdatedDetector.givenEventIsOutOfDate(it) }
148+ val eventProcessor = createProcessor(isInForeground = true , navigationState = VIEWING_A_THREAD )
138149
139- val result = eventProcessor.process(events, VIEWING_A_THREAD , renderedEvents = emptyList())
150+ val result = eventProcessor.process(events, renderedEvents = emptyList())
140151
141152 assertThat(result).isEqualTo(
142153 listOfProcessedEvents(
@@ -149,8 +160,9 @@ class NotifiableEventProcessorTest {
149160 fun `given viewing main timeline of the same room when processing thread timeline message event then keep message` () {
150161 val events = listOf (aNotifiableMessageEvent(eventId = AN_EVENT_ID , roomId = A_ROOM_ID , threadId = A_THREAD_ID ))
151162 outdatedDetector.givenEventIsInDate(events[0 ])
163+ val eventProcessor = createProcessor(isInForeground = true , navigationState = VIEWING_A_ROOM )
152164
153- val result = eventProcessor.process(events, VIEWING_A_ROOM , renderedEvents = emptyList())
165+ val result = eventProcessor.process(events, renderedEvents = emptyList())
154166
155167 assertThat(result).isEqualTo(
156168 listOfProcessedEvents(
@@ -163,8 +175,9 @@ class NotifiableEventProcessorTest {
163175 fun `given viewing thread timeline of the same room when processing main timeline message event then keep message` () {
164176 val events = listOf (aNotifiableMessageEvent(eventId = AN_EVENT_ID , roomId = A_ROOM_ID ))
165177 outdatedDetector.givenEventIsInDate(events[0 ])
178+ val eventProcessor = createProcessor(isInForeground = true , navigationState = VIEWING_A_THREAD )
166179
167- val result = eventProcessor.process(events, VIEWING_A_THREAD , renderedEvents = emptyList())
180+ val result = eventProcessor.process(events, renderedEvents = emptyList())
168181
169182 assertThat(result).isEqualTo(
170183 listOfProcessedEvents(
@@ -180,8 +193,9 @@ class NotifiableEventProcessorTest {
180193 ProcessedEvent (ProcessedEvent .Type .KEEP , events[0 ]),
181194 ProcessedEvent (ProcessedEvent .Type .KEEP , anInviteNotifiableEvent(eventId = AN_EVENT_ID_2 ))
182195 )
196+ val eventProcessor = createProcessor(navigationState = NOT_VIEWING_A_ROOM )
183197
184- val result = eventProcessor.process(events, appNavigationState = NOT_VIEWING_A_ROOM , renderedEvents = renderedEvents)
198+ val result = eventProcessor.process(events, renderedEvents = renderedEvents)
185199
186200 assertThat(result).isEqualTo(
187201 listOfProcessedEvents(
@@ -194,4 +208,14 @@ class NotifiableEventProcessorTest {
194208 private fun listOfProcessedEvents (vararg event : Pair <ProcessedEvent .Type , NotifiableEvent >) = event.map {
195209 ProcessedEvent (it.first, it.second)
196210 }
211+
212+ private fun createProcessor (
213+ isInForeground : Boolean = false,
214+ navigationState : NavigationState
215+ ): NotifiableEventProcessor {
216+ return NotifiableEventProcessor (
217+ outdatedDetector.instance,
218+ FakeAppNavigationStateService (MutableStateFlow (AppNavigationState (navigationState, isInForeground))),
219+ )
220+ }
197221}
0 commit comments