UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

246 lines (244 loc) 8.82 kB
"use strict"; var import_vitest = require("vitest"); var import_generateSitemap = require("./generateSitemap.native.js"); (0, import_vitest.describe)("generateSitemap", function () { var originalEnv; (0, import_vitest.beforeEach)(function () { originalEnv = process.env.ONE_SERVER_URL; delete process.env.ONE_SERVER_URL; }); (0, import_vitest.afterEach)(function () { if (originalEnv !== void 0) { process.env.ONE_SERVER_URL = originalEnv; } else { delete process.env.ONE_SERVER_URL; } }); (0, import_vitest.it)("generates basic sitemap XML", function () { var routes = [{ path: "/" }, { path: "/about" }, { path: "/blog" }]; var options = {}; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'); (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'); (0, import_vitest.expect)(result).toContain("<loc>/</loc>"); (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"); (0, import_vitest.expect)(result).toContain("<loc>/blog</loc>"); (0, import_vitest.expect)(result).toContain("</urlset>"); }); (0, import_vitest.it)("uses baseUrl when provided", function () { var routes = [{ path: "/" }, { path: "/about" }]; var options = { baseUrl: "https://example.com" }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<loc>https://example.com/</loc>"); (0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>"); }); (0, import_vitest.it)("strips trailing slash from baseUrl", function () { var routes = [{ path: "/about" }]; var options = { baseUrl: "https://example.com/" }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<loc>https://example.com/about</loc>"); (0, import_vitest.expect)(result).not.toContain("https://example.com//about"); }); (0, import_vitest.it)("uses ONE_SERVER_URL env var when baseUrl not provided", function () { process.env.ONE_SERVER_URL = "https://env-url.com"; var routes = [{ path: "/test" }]; var options = {}; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<loc>https://env-url.com/test</loc>"); }); (0, import_vitest.it)("applies default priority to all routes", function () { var routes = [{ path: "/" }, { path: "/about" }]; var options = { priority: 0.8 }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toMatch(RegExp("<url>\\s*<loc>\\/about<\\/loc>\\s*<priority>0\\.8<\\/priority>\\s*<\\/url>", "s")); }); (0, import_vitest.it)("applies default changefreq to all routes", function () { var routes = [{ path: "/" }, { path: "/about" }]; var options = { changefreq: "weekly" }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<changefreq>weekly</changefreq>"); }); (0, import_vitest.it)("respects route-level sitemap exports", function () { var routes = [{ path: "/", routeExport: { priority: 1, changefreq: "daily" } }, { path: "/about", routeExport: { priority: 0.5, changefreq: "monthly" } }]; var options = { priority: 0.7, changefreq: "weekly" }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toMatch(RegExp("<url>\\s*<loc>\\/<\\/loc>\\s*<changefreq>daily<\\/changefreq>\\s*<priority>1\\.0<\\/priority>\\s*<\\/url>", "s")); (0, import_vitest.expect)(result).toMatch(RegExp("<url>\\s*<loc>\\/about<\\/loc>\\s*<changefreq>monthly<\\/changefreq>\\s*<priority>0\\.5<\\/priority>\\s*<\\/url>", "s")); }); (0, import_vitest.it)("excludes routes with routeExport.exclude = true", function () { var routes = [{ path: "/" }, { path: "/admin", routeExport: { exclude: true } }, { path: "/about" }]; var options = {}; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<loc>/</loc>"); (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"); (0, import_vitest.expect)(result).not.toContain("/admin"); }); (0, import_vitest.it)("excludes routes matching exclude glob patterns", function () { var routes = [{ path: "/" }, { path: "/admin/dashboard" }, { path: "/admin/users" }, { path: "/about" }, { path: "/api/health" }]; var options = { exclude: ["/admin/*", "/api/*"] }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<loc>/</loc>"); (0, import_vitest.expect)(result).toContain("<loc>/about</loc>"); (0, import_vitest.expect)(result).not.toContain("/admin"); (0, import_vitest.expect)(result).not.toContain("/api"); }); (0, import_vitest.it)("includes lastmod when provided in route export", function () { var routes = [{ path: "/", routeExport: { lastmod: "2024-01-15" } }, { path: "/about", routeExport: { lastmod: /* @__PURE__ */new Date("2024-06-20") } }]; var options = {}; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<lastmod>2024-01-15</lastmod>"); (0, import_vitest.expect)(result).toContain("<lastmod>2024-06-20</lastmod>"); }); (0, import_vitest.it)("escapes XML special characters in URLs", function () { var routes = [{ path: "/search?q=foo&bar=baz" }]; var options = { baseUrl: "https://example.com" }; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("&amp;"); (0, import_vitest.expect)(result).not.toContain("&bar"); }); (0, import_vitest.it)("generates empty sitemap when no routes", function () { var routes = []; var options = {}; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain('<?xml version="1.0" encoding="UTF-8"?>'); (0, import_vitest.expect)(result).toContain('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'); (0, import_vitest.expect)(result).toContain("</urlset>"); (0, import_vitest.expect)(result).not.toContain("<url>"); }); (0, import_vitest.it)("handles all valid changefreq values", function () { var changefreqs = ["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"]; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = changefreqs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var changefreq = _step.value; var routes = [{ path: "/", routeExport: { changefreq } }]; var result = (0, import_generateSitemap.generateSitemap)(routes, {}); (0, import_vitest.expect)(result).toContain(`<changefreq>${changefreq}</changefreq>`); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }); (0, import_vitest.it)("formats priority with one decimal place", function () { var routes = [{ path: "/", routeExport: { priority: 1 } }, { path: "/about", routeExport: { priority: 0.5 } }, { path: "/blog", routeExport: { priority: 0.75 } }]; var options = {}; var result = (0, import_generateSitemap.generateSitemap)(routes, options); (0, import_vitest.expect)(result).toContain("<priority>1.0</priority>"); (0, import_vitest.expect)(result).toContain("<priority>0.5</priority>"); (0, import_vitest.expect)(result).toContain("<priority>0.8</priority>"); }); }); //# sourceMappingURL=generateSitemap.test.native.js.map