import assert from "node:assert/strict";
import { describe, it } from "node:test";

import { diasDeValidade, prazoDoLink } from "./prazo-do-link.ts";

describe("prazoDoLink", () => {
  const agora = new Date("2026-09-25T21:33:41.000Z");

  it("validade ligada: vence N dias depois de copiar ou enviar", () => {
    const vence = prazoDoLink(true, 5, agora);
    assert.ok(vence);
    assert.equal(Math.round((Date.parse(vence) - agora.getTime()) / 86_400_000), 5);
    assert.equal(prazoDoLink(true, "30", agora) !== null, true);
  });

  it("validade desligada ou sem dias válidos: sem prazo, o link não vence", () => {
    assert.equal(prazoDoLink(false, 5, agora), null);
    assert.equal(prazoDoLink(null, 5, agora), null);
    assert.equal(prazoDoLink(true, 0, agora), null);
    assert.equal(prazoDoLink(true, -3, agora), null);
    assert.equal(prazoDoLink(true, null, agora), null);
    assert.equal(prazoDoLink(true, "abc", agora), null);
  });

  it("os dias que a faixa mostra são os mesmos que o carimbo usa", () => {
    assert.equal(diasDeValidade(true, 5), 5);
    assert.equal(diasDeValidade(true, "30"), 30);
    assert.equal(diasDeValidade(false, 5), null);
    assert.equal(diasDeValidade(true, 0), null);
    assert.equal(diasDeValidade(true, -3), null);
    assert.equal(diasDeValidade(true, null), null);
  });
});
