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 org.mobilenativefoundation.trails.xplat.lib.models.post.Post
8+ import org.mobilenativefoundation.trails.xplat.lib.repositories.post.impl.store.db.PostBookkeepingDAO
9+ import kotlin.test.Test
10+
11+ class RealPostBookkeepingWriterTest {
12+
13+ private val bookkeepingDAO = mock<PostBookkeepingDAO >(MockMode .autoUnit)
14+ private val bookkeepingWriter = RealPostBookkeepingWriter (bookkeepingDAO)
15+
16+ @Test
17+ fun recordFailedDelete_givenNormalDAO_whenCalled_thenShouldInsert () {
18+ // Given
19+ val key = Post .Key (1 )
20+ val timestamp = 1L
21+
22+ // When
23+ bookkeepingWriter.recordFailedDelete(key, timestamp)
24+
25+ // Then
26+ verify { bookkeepingDAO.insertFailedDelete(key.id, timestamp) }
27+ verifyNoMoreCalls(bookkeepingDAO)
28+ }
29+
30+ @Test
31+ fun recordFailedUpdate_givenNormalDAO_whenCalled_thenShouldUpdate () {
32+ // Given
33+ val key = Post .Key (1 )
34+ val timestamp = 1L
35+
36+ // When
37+ bookkeepingWriter.recordFailedUpdate(key, timestamp)
38+
39+ // Then
40+ verify { bookkeepingDAO.insertFailedUpdate(key.id, timestamp) }
41+ verifyNoMoreCalls(bookkeepingDAO)
42+ }
43+
44+ @Test
45+ fun recordFailedDeletes_givenNormalDAO_whenCalledWithMultipleKeys_thenShouldInsertAll () {
46+ // Given
47+ val key1 = Post .Key (1 )
48+ val key2 = Post .Key (2 )
49+ val key3 = Post .Key (3 )
50+ val timestamp = 1L
51+
52+ // When
53+ bookkeepingWriter.recordFailedDeletes(listOf (key1, key2, key3), timestamp)
54+
55+ // Then
56+ verify { bookkeepingDAO.insertFailedDelete(key1.id, timestamp) }
57+ verify { bookkeepingDAO.insertFailedDelete(key2.id, timestamp) }
58+ verify { bookkeepingDAO.insertFailedDelete(key3.id, timestamp) }
59+ verifyNoMoreCalls(bookkeepingDAO)
60+ }
61+ }
0 commit comments