Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091import { describe, it, expect } from "vitest";import { encodeOgPayload, repoCard, issueCard, pullCard } from "$lib/seo/og";
describe("og card URL generation", () => { it("generates repository OG card URL with clean payload", () => { const url = repoCard( { name: "core", ownerHandle: "tangled.org", ownerDid: "did:plc:123" }, { stars: 42, pulls: 5, issues: 12 }, "https://ogre.tangled.network", [{ color: "#3178c6", percentage: 100 }], "https://next.tangled.org" ); expect(url).toContain("https://ogre.tangled.network/card?payload="); const payloadParam = new URL(url).searchParams.get("payload")!; const decoded = JSON.parse(Buffer.from(payloadParam, "base64url").toString("utf-8")); expect(decoded.avatarUrl).toBe( "https://next.tangled.org/avatar/did%3Aplc%3A123?size=256&format=jpeg" ); expect(decoded.languages).toEqual([{ color: "#3178c6", percentage: 100 }]); expect(decoded.stars).toBe(42); });
it("generates issue OG card URL", () => { const url = issueCard( { name: "core", ownerHandle: "tangled.org" }, { title: "fix critical bug", issueNumber: "3lbqxyz", state: "open", createdAt: "2026-03-01T00:00:00Z", author: { handle: "alice.tangled.org", did: "did:plc:alice" } }, "https://ogre.tangled.network", "https://next.tangled.org" ); expect(url).toContain("https://ogre.tangled.network/card?payload="); const payloadParam = new URL(url).searchParams.get("payload")!; const decoded = JSON.parse(Buffer.from(payloadParam, "base64url").toString("utf-8")); expect(decoded.authorAvatarUrl).toBe( "https://next.tangled.org/avatar/did%3Aplc%3Aalice?size=256&format=jpeg" ); });
it("generates pull request OG card URL", () => { const url = pullCard( { name: "core", ownerHandle: "tangled.org" }, { title: "add new feature", rkey: "3lbqabc", state: "open", createdAt: "2026-03-01T00:00:00Z", author: { handle: "bob.tangled.org", did: "did:plc:bob" } }, 3, "https://ogre.tangled.network", "https://next.tangled.org" ); expect(url).toContain("https://ogre.tangled.network/card?payload="); const payloadParam = new URL(url).searchParams.get("payload")!; const decoded = JSON.parse(Buffer.from(payloadParam, "base64url").toString("utf-8")); expect(decoded.authorAvatarUrl).toBe( "https://next.tangled.org/avatar/did%3Aplc%3Abob?size=256&format=jpeg" ); });
it("omits empty and null properties from encoded payload", () => { const payload = encodeOgPayload({ type: "repository", repoName: "test", ownerHandle: "alice" }); const decoded = JSON.parse(Buffer.from(payload, "base64url").toString("utf-8")); expect(decoded).toEqual({ type: "repository", repoName: "test", ownerHandle: "alice" }); expect(decoded.stars).toBeUndefined(); expect(decoded.languages).toBeUndefined(); });
it("uses custom baseUrl when provided", () => { const url = repoCard( { name: "core", ownerHandle: "tangled.org" }, null, "https://ogre-dev.tangled.network" ); expect(url).toContain("https://ogre-dev.tangled.network/card?payload="); });});