nim-chat-sdk/tests/test_sqlite_store.nim
2025-07-16 09:22:29 +03:00

39 lines
1.2 KiB
Nim

import testutils/unittests
import ../ratelimit/store/sqlite
import ../ratelimit/store/store
import chronos
suite "SqliteRateLimitStore Tests":
asyncTest "newSqliteRateLimitStore - creates store with default values":
## Given & When
let now = Moment.now()
let store = newSqliteRateLimitStore()
defer:
store.close()
## Then
let bucketState = await store.loadBucketState()
check bucketState.budget == 10
check bucketState.budgetCap == 10
check bucketState.lastTimeFull.epochSeconds() == now.epochSeconds()
asyncTest "saveBucketState and loadBucketState - state persistence":
## Given
let now = Moment.now()
let store = newSqliteRateLimitStore()
defer:
store.close()
let newBucketState = BucketState(budget: 5, budgetCap: 20, lastTimeFull: now)
## When
let saveResult = await store.saveBucketState(newBucketState)
let loadedState = await store.loadBucketState()
## Then
check saveResult == true
check loadedState.budget == newBucketState.budget
check loadedState.budgetCap == newBucketState.budgetCap
check loadedState.lastTimeFull.epochSeconds() ==
newBucketState.lastTimeFull.epochSeconds()