chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import { formatResetCountdown } from "@/shared/utils/formatting";
|
||||
|
||||
// Guards both the pure formatting behavior and the client-safe home of this
|
||||
// helper: it MUST live in @/shared/utils/formatting (not db/providers/rateLimit)
|
||||
// so client components can import it without pulling the server-only DB barrel
|
||||
// (better-sqlite3/ioredis → node:net) into the browser bundle. See PR #6155.
|
||||
|
||||
test("returns null for missing / past / invalid reset times", () => {
|
||||
assert.equal(formatResetCountdown(null), null);
|
||||
assert.equal(formatResetCountdown(undefined), null);
|
||||
assert.equal(formatResetCountdown(0), null);
|
||||
assert.equal(formatResetCountdown("not-a-date"), null);
|
||||
assert.equal(formatResetCountdown(Date.now() - 60_000), null);
|
||||
});
|
||||
|
||||
test("formats seconds-only remaining", () => {
|
||||
const out = formatResetCountdown(Date.now() + 30_000);
|
||||
assert.match(out ?? "", /^\d+s$/);
|
||||
});
|
||||
|
||||
test("formats minutes + seconds", () => {
|
||||
const out = formatResetCountdown(Date.now() + 5 * 60_000 + 30_000);
|
||||
assert.match(out ?? "", /^\d+m \d+s$/);
|
||||
});
|
||||
|
||||
test("formats hours + minutes", () => {
|
||||
const out = formatResetCountdown(Date.now() + 2 * 3_600_000 + 35 * 60_000);
|
||||
assert.match(out ?? "", /^\d+h \d+m$/);
|
||||
assert.ok((out ?? "").startsWith("2h"));
|
||||
});
|
||||
|
||||
test("accepts an ISO string as well as an epoch number", () => {
|
||||
const iso = new Date(Date.now() + 90_000).toISOString();
|
||||
assert.match(formatResetCountdown(iso) ?? "", /^(1m \d+s|\d+s)$/);
|
||||
});
|
||||
Reference in New Issue
Block a user