// author: simon-pierre boucher import { describe, expect, it } from "vitest"; import { parseSitemap } from "./sitemap.js"; describe("parseSitemap", () => { it("parses a urlset with lastmod", () => { const xml = ` https://e.com/a2026-01-01 https://e.com/b `; const r = parseSitemap(xml); expect(r.urls).toEqual([ { loc: "https://e.com/a", lastModified: "2026-01-01" }, { loc: "https://e.com/b" }, ]); expect(r.childSitemaps).toEqual([]); }); it("parses a sitemap index into child sitemaps", () => { const xml = ` https://e.com/sitemap-1.xml https://e.com/sitemap-2.xml `; const r = parseSitemap(xml); expect(r.childSitemaps).toEqual(["https://e.com/sitemap-1.xml", "https://e.com/sitemap-2.xml"]); expect(r.urls).toEqual([]); }); it("decodes entities and CDATA in loc", () => { const xml = `https://e.com/s?a=1&b=2 `; const r = parseSitemap(xml); expect(r.urls[0]?.loc).toBe("https://e.com/s?a=1&b=2"); expect(r.urls[1]?.loc).toBe("https://e.com/c"); }); it("falls back to bare tags", () => { const r = parseSitemap("https://e.com/xhttps://e.com/y"); expect(r.urls.map((u) => u.loc)).toEqual(["https://e.com/x", "https://e.com/y"]); }); });