Files
2026-07-13 13:39:12 +08:00

56 lines
2.2 KiB
TypeScript

import { describe, it, beforeEach } from "node:test";
import assert from "node:assert/strict";
import {
getPersistedCreditBalance,
getAllPersistedCreditBalances,
persistCreditBalance,
} from "../../src/lib/db/creditBalance.ts";
describe("creditBalance DB module", () => {
const testAccount = `test-credit-${Date.now()}`;
it("getPersistedCreditBalance returns null for unknown account", () => {
const result = getPersistedCreditBalance(`nonexistent-${Date.now()}`);
assert.equal(result, null, "should return null for unknown account");
});
it("persistCreditBalance stores and getPersistedCreditBalance retrieves", () => {
persistCreditBalance(testAccount, 42.5);
const result = getPersistedCreditBalance(testAccount);
assert.equal(result, 42.5, "should return persisted balance");
});
it("persistCreditBalance overwrites previous balance", () => {
persistCreditBalance(testAccount, 100);
persistCreditBalance(testAccount, 50);
const result = getPersistedCreditBalance(testAccount);
assert.equal(result, 50, "should return latest balance");
});
it("persistCreditBalance handles zero balance correctly", () => {
persistCreditBalance(testAccount, 0);
const result = getPersistedCreditBalance(testAccount);
assert.equal(result, 0, "zero balance should be stored and returned");
});
it("getAllPersistedCreditBalances returns all entries", () => {
const account1 = `test-credit-all-1-${Date.now()}`;
const account2 = `test-credit-all-2-${Date.now()}`;
persistCreditBalance(account1, 10);
persistCreditBalance(account2, 20);
const all = getAllPersistedCreditBalances();
assert.ok(all instanceof Map, "should return a Map");
assert.ok(all.has(account1), "should contain account1");
assert.ok(all.has(account2), "should contain account2");
assert.equal(all.get(account1), 10);
assert.equal(all.get(account2), 20);
});
it("getAllPersistedCreditBalances returns empty Map when no entries", () => {
// This test relies on there being entries from other tests, but the Map should always be returned
const all = getAllPersistedCreditBalances();
assert.ok(all instanceof Map, "should always return a Map");
});
});