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

import { aoVivoNaTela } from "./ao-vivo.ts";

/* Quinta, 15/10/2026 às 19:00 em Brasília (22:00 UTC). */
const EM = "2026-10-15T22:00:00.000Z";
const MOMENTO = new Date(EM).getTime();
const MIN = 60 * 1000;

test("dias antes: sem link, diz quando começa e quando a página se atualiza", () => {
  const agora = MOMENTO - 2 * 24 * 60 * MIN;
  const tela = aoVivoNaTela(EM, "https://meet.example.com/x", agora);
  assert.equal(tela.link, null);
  assert.match(tela.quando, /^Quinta-feira, 15 de outubro/);
  assert.match(tela.quando, /19:00/);
  assert.equal(tela.situacao, "Começa em 2 dias.");
  assert.equal(tela.liberaEmMs, MOMENTO - 15 * MIN - agora);
});

test("no mesmo dia, antes dos 15 minutos: começa hoje, ainda sem link", () => {
  const tela = aoVivoNaTela(EM, "https://meet.example.com/x", MOMENTO - 60 * MIN);
  assert.equal(tela.link, null);
  assert.equal(tela.situacao, "Começa hoje às 19:00.");
});

test("15 minutos antes o link aparece", () => {
  const tela = aoVivoNaTela(EM, "https://meet.example.com/x", MOMENTO - 15 * MIN);
  assert.equal(tela.link, "https://meet.example.com/x");
  assert.equal(tela.liberaEmMs, null);
  assert.equal(tela.situacao, "Começa em instantes. Já dá para entrar.");
});

test("durante e depois", () => {
  assert.equal(aoVivoNaTela(EM, "https://meet.example.com/x", MOMENTO + 30 * MIN).situacao, "Acontecendo agora.");
  const depois = aoVivoNaTela(EM, "https://meet.example.com/x", MOMENTO + 5 * 60 * MIN);
  assert.match(depois.situacao, /^Esta transmissão já aconteceu/);
  assert.equal(depois.link, "https://meet.example.com/x");
});
