Files
WatchLink/tests/invites.test.ts
ToxicCrzay270 928a3815ed
All checks were successful
Template Compliance / compliance (push) Successful in 5s
Improve invite handling
2026-06-11 22:42:35 +02:00

29 lines
1019 B
TypeScript

import { describe, expect, it } from "vitest";
import { inviteExpiresAt, isInviteExpired } from "../src/lib/invites";
const now = Date.UTC(2026, 0, 1);
const day = 24 * 60 * 60 * 1000;
describe("inviteExpiresAt", () => {
it("returns null for invalid or non-expiring values", () => {
expect(inviteExpiresAt(null, now)).toBeNull();
expect(inviteExpiresAt("0", now)).toBeNull();
expect(inviteExpiresAt("-3", now)).toBeNull();
expect(inviteExpiresAt("not-a-number", now)).toBeNull();
});
it("creates an expiration date for valid day counts", () => {
expect(inviteExpiresAt("7", now)?.getTime()).toBe(now + 7 * day);
});
it("caps expiration at one year", () => {
expect(inviteExpiresAt("9999", now)?.getTime()).toBe(now + 365 * day);
});
it("detects expired invite timestamps", () => {
expect(isInviteExpired(new Date(now - day), now)).toBe(true);
expect(isInviteExpired(new Date(now + day), now)).toBe(false);
expect(isInviteExpired(null, now)).toBe(false);
});
});