test/shared/embed.test.ts
Rama main · réplica de lectura del repositorio original.
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(
'<script async src="https://example.com/embed.js" data-listings="test"></script>',
);
});
test("iframe variant is a plain iframe without resizer scripts", () => {
const result = buildEmbedSnippets("https://example.com/ticket/test");
expect(result.iframe).toBe(
'<iframe src="https://example.com/ticket/test?iframe=true" loading="lazy" style="border: none; width: 100%; height: 600px;">Loading..</iframe>',
);
});
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);
});
});
});