@@ -9,7 +9,6 @@ import dev.mokkery.matcher.any
99import dev.mokkery.matcher.eq
1010import dev.mokkery.mock
1111import dev.mokkery.verify
12- import dev.mokkery.verify.VerifyMode
1312import dev.mokkery.verify.VerifyMode.Companion.exactly
1413import dev.mokkery.verifySuspend
1514import kotlinx.coroutines.flow.flowOf
@@ -28,7 +27,7 @@ import org.mobilenativefoundation.store.store5.test_utils.model.Note
2827import kotlin.test.Test
2928import kotlin.test.assertEquals
3029
31- class RealMutableStoreTests {
30+ class EagerConflictResolutionLoggingTests {
3231 private val testScope = TestScope ()
3332
3433 private val delegate = mock<RealStore <String , Note , Note , Note >>(autoUnit)
@@ -98,4 +97,58 @@ class RealMutableStoreTests {
9897
9998 }
10099
100+ @Test
101+ fun stream_givenConflicts_whenErrorMessageResolvingConflicts_thenShouldLog () = testScope.runTest {
102+ // Given
103+ val latestNote = Note (" id" , " Title" , " Content" )
104+ val readResponse = StoreReadResponse .Data (latestNote, StoreReadResponseOrigin .Cache )
105+ val delegateFlow = flowOf(readResponse)
106+ val errorMessage = " Error updating network."
107+ val readRequest = StoreReadRequest .fresh(" id" )
108+
109+ every {
110+ delegate.stream(any())
111+ } returns delegateFlow
112+
113+ everySuspend {
114+ delegate.latestOrNull(any())
115+ } returns latestNote
116+
117+ everySuspend {
118+ bookkeeper.getLastFailedSync(any())
119+ } returns 1L
120+
121+ everySuspend {
122+ updater.post(any(), any())
123+ } returns UpdaterResult .Error .Message (errorMessage)
124+
125+
126+ // When
127+ val stream = mutableStore.stream<Boolean >(
128+ readRequest
129+ )
130+
131+ // Then
132+
133+ stream.test {
134+
135+ verifySuspend(exactly(1 )) {
136+ updater.post(eq(" id" ), eq(latestNote))
137+ }
138+
139+ verify(exactly(1 )) {
140+ logger.error(eq(errorMessage))
141+ }
142+
143+ verify(exactly(1 )) {
144+ delegate.stream(eq(readRequest))
145+ }
146+
147+ assertEquals(readResponse, awaitItem())
148+
149+ awaitComplete()
150+ }
151+
152+ }
153+
101154}
0 commit comments