Skip to content

Commit c0be786

Browse files
committed
Cover RealPostBookkeepingRemover
Signed-off-by: Matt Ramotar <[email protected]>
1 parent 4df4b37 commit c0be786

File tree

1 file changed

+101
-0
lines changed
  • xplat/lib/repositories/post/impl/src/commonTest/kotlin/org/mobilenativefoundation/trails/xplat/lib/repositories/post/impl/store/bookkeeper

1 file changed

+101
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package org.mobilenativefoundation.trails.xplat.lib.repositories.post.impl.store.bookkeeper
2+
3+
import dev.mokkery.MockMode
4+
import dev.mokkery.mock
5+
import dev.mokkery.verify
6+
import dev.mokkery.verifyNoMoreCalls
7+
import kotlinx.coroutines.test.runTest
8+
import org.mobilenativefoundation.trails.xplat.lib.models.post.Post
9+
import org.mobilenativefoundation.trails.xplat.lib.repositories.post.impl.store.db.PostBookkeepingDAO
10+
import kotlin.test.Test
11+
12+
class PostBookkeepingRemoverTest {
13+
private val bookkeepingDAO = mock<PostBookkeepingDAO>(MockMode.autoUnit)
14+
private val bookkeepingRemover = RealPostBookkeepingRemover(bookkeepingDAO)
15+
16+
@Test
17+
fun removeFailedUpdates_givenValidDAOAndFailedUpdatesAndDeletes_whenCalledWithMultipleKeys_thenShouldClearFailedUpdatesOnly() =
18+
runTest {
19+
// Given
20+
val key1 = Post.Key(1)
21+
val key2 = Post.Key(2)
22+
val key3 = Post.Key(3)
23+
24+
// When
25+
bookkeepingRemover.removeFailedUpdates(listOf(key1, key2, key3))
26+
27+
// Then
28+
verify { bookkeepingDAO.clearFailedUpdate(key1.id) }
29+
verify { bookkeepingDAO.clearFailedUpdate(key2.id) }
30+
verify { bookkeepingDAO.clearFailedUpdate(key3.id) }
31+
verifyNoMoreCalls(bookkeepingDAO)
32+
}
33+
34+
@Test
35+
fun removeFailedDeletes_givenValidDAOAndFailedUpdatesAndDeletes_whenCalledWithMultipleKeys_thenShouldClearFailedDeletesOnly() =
36+
runTest {
37+
// Given
38+
val key1 = Post.Key(1)
39+
val key2 = Post.Key(2)
40+
val key3 = Post.Key(3)
41+
42+
// When
43+
bookkeepingRemover.removeFailedDeletes(listOf(key1, key2, key3))
44+
45+
// Then
46+
verify { bookkeepingDAO.clearFailedDelete(key1.id) }
47+
verify { bookkeepingDAO.clearFailedDelete(key2.id) }
48+
verify { bookkeepingDAO.clearFailedDelete(key3.id) }
49+
verifyNoMoreCalls(bookkeepingDAO)
50+
}
51+
52+
@Test
53+
fun removeAllFailedDeletes_givenValidDAOAndFailedUpdatesAndDeletes_whenCalled_thenShouldClearAllFailedDeletes() =
54+
runTest {
55+
// When
56+
bookkeepingRemover.removeAllFailedDeletes()
57+
58+
// Then
59+
verify { bookkeepingDAO.clearAllFailedDeletes() }
60+
verifyNoMoreCalls(bookkeepingDAO)
61+
}
62+
63+
@Test
64+
fun removeAllFailedUpdates_givenValidDAOAndFailedUpdatesAndDeletes_whenCalled_thenShouldClearAllFailedUpdates() =
65+
runTest {
66+
// When
67+
bookkeepingRemover.removeAllFailedUpdates()
68+
69+
// Then
70+
verify { bookkeepingDAO.clearAllFailedUpdates() }
71+
verifyNoMoreCalls(bookkeepingDAO)
72+
}
73+
74+
@Test
75+
fun removeFailedDelete_givenValidDAOAndFailedUpdatesAndDeletes_whenCalledWithSingleKey_thenShouldRemoveFailedDeletesForThatKey() =
76+
runTest {
77+
// Given
78+
val key1 = Post.Key(1)
79+
80+
// When
81+
bookkeepingRemover.removeFailedDelete(key1)
82+
83+
// Then
84+
verify { bookkeepingDAO.clearFailedDelete(key1.id) }
85+
verifyNoMoreCalls(bookkeepingDAO)
86+
}
87+
88+
@Test
89+
fun removeFailedUpdate_givenValidDAOAndFailedUpdatesAndDeletes_whenCalledWithSingleKey_thenShouldRemoveFailedUpdatesForThatKey() =
90+
runTest {
91+
// Given
92+
val key1 = Post.Key(1)
93+
94+
// When
95+
bookkeepingRemover.removeFailedUpdate(key1)
96+
97+
// Then
98+
verify { bookkeepingDAO.clearFailedUpdate(key1.id) }
99+
verifyNoMoreCalls(bookkeepingDAO)
100+
}
101+
}

0 commit comments

Comments
 (0)