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

import { emailValido, novoCodigo, resumoDoCodigo, resumosIguais } from "./servidor/membros.ts";

test("o código tem sempre 6 números", () => {
  for (let i = 0; i < 200; i += 1) assert.match(novoCodigo(), /^\d{6}$/);
});

test("o resumo do código depende do cliente", () => {
  const a = resumoDoCodigo("cliente-a", "123456");
  const b = resumoDoCodigo("cliente-b", "123456");
  assert.notEqual(a, b);
  assert.match(a, /^[0-9a-f]{64}$/);
  assert.equal(resumosIguais(a, resumoDoCodigo("cliente-a", "123456")), true);
  assert.equal(resumosIguais(a, b), false);
  assert.equal(resumosIguais(a, "curto"), false);
});

test("e-mails", () => {
  assert.equal(emailValido("fulano@exemplo.com"), true);
  assert.equal(emailValido("fulano@exemplo"), false);
  assert.equal(emailValido("sem arroba.com"), false);
});
