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) })