import { assertStringIncludes } from "@std/assert"; import { expect } from "@std/expect"; import { describe, it as test } from "@std/testing/bdd"; import { buildEmbedSnippets } from "#shared/embed.ts"; describe("embed", () => { describe("buildEmbedSnippets", () => { test("script variant is a single script tag with data-listings", () => { const result = buildEmbedSnippets("https://example.com/ticket/test"); expect(result.script).toBe( '', ); }); test("iframe variant is a plain iframe without resizer scripts", () => { const result = buildEmbedSnippets("https://example.com/ticket/test"); expect(result.iframe).toBe( '', ); }); test("uses plus-delimited slugs in data-listings and iframe src", () => { const result = buildEmbedSnippets("https://example.com/ticket/a+b"); assertStringIncludes(result.script, 'data-listings="a+b"'); assertStringIncludes( result.iframe, "https://example.com/ticket/a+b?iframe=true", ); }); test("extracts origin correctly for embed script URL", () => { const result = buildEmbedSnippets( "https://tickets.mysite.org/ticket/test", ); assertStringIncludes( result.script, 'src="https://tickets.mysite.org/embed.js"', ); }); test("handles non-ticket URLs by emitting empty data-listings", () => { const result = buildEmbedSnippets("https://example.com/"); assertStringIncludes(result.script, 'data-listings=""'); }); test("rejects invalid URLs before building snippets", () => { expect(() => buildEmbedSnippets("not a url")).toThrow(TypeError); }); }); });