Ctrl K
ComunidadGuías…

test/avatar-imprint.test.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
var assert = require("node:assert/strict");
var fs = require("node:fs");
var path = require("node:path");
var test = require("node:test");
var url = require("node:url");

var sourcePath = path.join(__dirname, "..", "lib", "public", "modules", "avatar-imprint.js");

function loadModule() {
  var source = fs.readFileSync(sourcePath, "utf8");
  return import("data:text/javascript;base64," + Buffer.from(source).toString("base64"));
}

test("Clay Imprints are deterministic and preserve the requested size", async function () {
  var module = await loadModule();
  var first = module.imprintSvg({ style: "thumbs", seed: "sample-user", size: 24, color: "#7c3aed" });
  var second = module.imprintSvg({ style: "thumbs", seed: "sample-user", size: 24, color: "#7c3aed" });
  assert.equal(first, second);
  assert.match(first, /width="24" height="24"/);
  assert.match(first, /viewBox="0 0 7 7"/);
  assert.match(first, /stroke-width="0\.08"/);
});

test("legacy avatar choices remain part of the identity hash", async function () {
  var module = await loadModule();
  var thumbs = module.imprintSvg({ style: "thumbs", seed: "same-user", size: 64, color: "#5857fc" });
  var bots = module.imprintSvg({ style: "bottts", seed: "same-user", size: 64, color: "#5857fc" });
  var imprint = module.imprintSvg({ style: "imprint", seed: "same-user", size: 64, color: "#5857fc" });
  assert.notEqual(thumbs, bots);
  assert.notEqual(thumbs, imprint);
});

test("pixel avatars are symmetric and ignore caller color overrides", async function () {
  var module = await loadModule();
  var purple = module.imprintSvg({ style: "imprint", seed: "sample-user", size: 64, color: "#7c3aed" });
  var green = module.imprintSvg({ style: "imprint", seed: "sample-user", size: 64, color: "#07e5a3" });
  assert.equal(purple, green);
  assert.match(purple, /viewBox="0 0 7 7"/);
  assert.match(purple, /shape-rendering="crispEdges"/);
  assert.doesNotMatch(purple, /#5857fc|#07e5a3/);
  var cells = module.identiconCells(123456);
  for (var i = 0; i < cells.length; i++) {
    assert.ok(cells.some(function (cell) { return cell[0] === 4 - cells[i][0] && cell[1] === cells[i][1]; }));
  }
  assert.doesNotMatch(purple, /<rect x="0" y="[0-4]"/);
});

test("generated avatars are local SVG data URLs with no remote dependency", async function () {
  var module = await loadModule();
  var result = module.imprintDataUrl({ style: "imprint", seed: "local-user", size: 32, color: "#466bd6" });
  assert.match(result, /^data:image\/svg\+xml;charset=utf-8,/);
  assert.doesNotMatch(result, /dicebear|https?:/i);
});

test("Clay Mate marks use a conventional display-name initial", async function () {
  var module = await loadModule();
  var arch = module.mateMarkSvg({ seed: "Arch", size: 64 });
  var ada = module.mateMarkSvg({ seed: "Ada", size: 64 });
  var buzz = module.mateMarkSvg({ seed: "Buzz", size: 64 });
  var archAgain = module.mateMarkSvg({ seed: "Arch", size: 64 });
  assert.equal(arch, archAgain);
  assert.equal(arch, ada);
  assert.notEqual(arch, buzz);
  assert.match(arch, />A<\/text>/);
  assert.match(buzz, />B<\/text>/);
  assert.doesNotMatch(arch, /fill="#333330"/);
  assert.doesNotMatch(buzz, /fill="#333330"/);
  assert.notEqual(arch, module.imprintSvg({ seed: "Arch", size: 64 }));
});

test("built-in Mate initials map to distinct muted source colors", async function () {
  var module = await loadModule();
  var expected = {
    Arch: "#8a806a",
    Rush: "#887b91",
    Ward: "#6f8382",
    Pixel: "#92756d",
    Buzz: "#6f7489",
  };
  var names = Object.keys(expected);
  for (var i = 0; i < names.length; i++) {
    var result = module.mateMarkSvg({ seed: names[i], size: 64 });
    assert.match(result, new RegExp(expected[names[i]]));
    assert.doesNotMatch(result, /#5857fc|#07e5a3/);
  }
});

test("Clay Mate marks are deterministic local SVG data URLs", async function () {
  var module = await loadModule();
  var first = module.mateMarkDataUrl({ seed: "reviewer", size: 32 });
  var second = module.mateMarkDataUrl({ seed: "reviewer", size: 32 });
  assert.equal(first, second);
  assert.match(first, /^data:image\/svg\+xml;charset=utf-8,/);
  assert.doesNotMatch(first, /https?:/i);
});