新增订阅消息额度记账表与模块
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
const test = require('node:test')
|
||||
const assert = require('node:assert')
|
||||
const { useTempDb } = require('./helper')
|
||||
|
||||
useTempDb() // 必须在 require quota/db 之前
|
||||
const quota = require('../src/quota')
|
||||
|
||||
test('未记录过的用户余额为 0', () => {
|
||||
assert.strictEqual(quota.getBalance('u_new'), 0)
|
||||
})
|
||||
|
||||
test('grant 纯累加,不去重', () => {
|
||||
quota.grant('u1', 1)
|
||||
quota.grant('u1', 1)
|
||||
quota.grant('u1', 1)
|
||||
assert.strictEqual(quota.getBalance('u1'), 3)
|
||||
})
|
||||
|
||||
test('consume 扣减余额', () => {
|
||||
quota.grant('u2', 5)
|
||||
quota.consume('u2', 2)
|
||||
assert.strictEqual(quota.getBalance('u2'), 3)
|
||||
})
|
||||
|
||||
test('consume 不会把余额扣成负数', () => {
|
||||
quota.grant('u3', 1)
|
||||
quota.consume('u3', 10)
|
||||
assert.strictEqual(quota.getBalance('u3'), 0)
|
||||
})
|
||||
|
||||
test('reset 把余额归零', () => {
|
||||
quota.grant('u4', 8)
|
||||
quota.reset('u4')
|
||||
assert.strictEqual(quota.getBalance('u4'), 0)
|
||||
})
|
||||
|
||||
test('grant 对非法 count 做兜底', () => {
|
||||
quota.grant('u5', 'abc')
|
||||
assert.strictEqual(quota.getBalance('u5'), 1)
|
||||
quota.grant('u5', -5)
|
||||
assert.strictEqual(quota.getBalance('u5'), 2)
|
||||
quota.grant('u5', 9999)
|
||||
assert.strictEqual(quota.getBalance('u5'), 52) // 单次上限 50
|
||||
})
|
||||
|
||||
test('各用户额度互不影响', () => {
|
||||
quota.grant('a', 3)
|
||||
quota.grant('b', 1)
|
||||
assert.strictEqual(quota.getBalance('a'), 3)
|
||||
assert.strictEqual(quota.getBalance('b'), 1)
|
||||
})
|
||||
Reference in New Issue
Block a user