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