mirror of
https://github.com/logos-messaging/nim-chat-sdk.git
synced 2026-01-06 16:13:10 +00:00
39 lines
1.2 KiB
Nim
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()
|