Skip to content

Commit e6653fa

Browse files
committed
Add some more mongodb tests
1 parent 476125d commit e6653fa

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

krescent-mongo/src/test/kotlin/dev/helight/krescent/mongo/MongoCollectionViewTest.kt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ package dev.helight.krescent.mongo
22

33
import com.mongodb.kotlin.client.coroutine.MongoClient
44
import dev.helight.krescent.checkpoints.CheckpointBucket
5+
import dev.helight.krescent.checkpoints.StoredCheckpoint
56
import kotlinx.coroutines.runBlocking
7+
import kotlinx.serialization.json.JsonPrimitive
68
import org.bson.Document
79
import org.junit.jupiter.api.Assertions.assertEquals
810
import org.junit.jupiter.api.Test
911
import org.testcontainers.containers.GenericContainer
1012
import org.testcontainers.junit.jupiter.Container
1113
import org.testcontainers.junit.jupiter.Testcontainers
1214
import java.time.Duration
15+
import java.time.Instant
16+
import kotlin.test.assertNull
1317

1418
@Testcontainers
1519
class MongoCollectionViewTest {
@@ -49,4 +53,44 @@ class MongoCollectionViewTest {
4953
assertEquals(1, view.collection.countDocuments())
5054
}
5155

56+
57+
@Test
58+
fun `Test Checkpoint Storage`() = runBlocking {
59+
val client = MongoClient.create(connectionString)
60+
val database = client.getDatabase("test")
61+
val storage = MongoCheckpointStorage(database)
62+
63+
val testCheckpointNS = "test-namespace"
64+
assertNull(storage.getLatestCheckpoint(testCheckpointNS))
65+
66+
val checkpoint = StoredCheckpoint(
67+
namespace = testCheckpointNS,
68+
revision = 1,
69+
position = "test-position",
70+
timestamp = Instant.now(),
71+
data = JsonPrimitive("test-data")
72+
)
73+
74+
storage.storeCheckpoint(checkpoint)
75+
val loadedCheckpoint = storage.getLatestCheckpoint(testCheckpointNS)
76+
assertEquals(checkpoint.namespace, loadedCheckpoint?.namespace)
77+
assertEquals(1, loadedCheckpoint?.revision)
78+
79+
val updatedCheckpoint = StoredCheckpoint(
80+
namespace = testCheckpointNS,
81+
revision = 2,
82+
position = "updated-position",
83+
timestamp = Instant.now(),
84+
data = JsonPrimitive("updated-data")
85+
)
86+
storage.storeCheckpoint(updatedCheckpoint)
87+
88+
val reloadedCheckpoint = storage.getLatestCheckpoint(testCheckpointNS)
89+
assertEquals(checkpoint.namespace, reloadedCheckpoint?.namespace)
90+
assertEquals(2, reloadedCheckpoint?.revision)
91+
92+
storage.clearCheckpoints()
93+
assertNull(storage.getLatestCheckpoint(testCheckpointNS))
94+
}
95+
5296
}

0 commit comments

Comments
 (0)