aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/sitemap/test/units/generate-sitemap.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/sitemap/test/units/generate-sitemap.test.js')
-rw-r--r--packages/integrations/sitemap/test/units/generate-sitemap.test.js147
1 files changed, 147 insertions, 0 deletions
diff --git a/packages/integrations/sitemap/test/units/generate-sitemap.test.js b/packages/integrations/sitemap/test/units/generate-sitemap.test.js
new file mode 100644
index 000000000..fbf4e7858
--- /dev/null
+++ b/packages/integrations/sitemap/test/units/generate-sitemap.test.js
@@ -0,0 +1,147 @@
+import assert from 'node:assert/strict';
+import { describe, it } from 'node:test';
+import { generateSitemap } from '../../dist/generate-sitemap.js';
+
+const site = 'http://example.com';
+
+describe('generateSitemap', () => {
+ describe('basic', () => {
+ it('works', () => {
+ const items = generateSitemap(
+ [
+ // All pages
+ `${site}/a`,
+ `${site}/b`,
+ `${site}/c`,
+ ],
+ site,
+ );
+ assert.equal(items.length, 3);
+ assert.equal(items[0].url, `${site}/a`);
+ assert.equal(items[1].url, `${site}/b`);
+ assert.equal(items[2].url, `${site}/c`);
+ });
+
+ it('sorts the items', () => {
+ const items = generateSitemap(
+ [
+ // All pages
+ `${site}/c`,
+ `${site}/a`,
+ `${site}/b`,
+ ],
+ site,
+ );
+ assert.equal(items.length, 3);
+ assert.equal(items[0].url, `${site}/a`);
+ assert.equal(items[1].url, `${site}/b`);
+ assert.equal(items[2].url, `${site}/c`);
+ });
+
+ it('sitemap props are passed to items', () => {
+ const now = new Date();
+ const items = generateSitemap(
+ [
+ // All pages
+ `${site}/a`,
+ `${site}/b`,
+ `${site}/c`,
+ ],
+ site,
+ {
+ changefreq: 'monthly',
+ lastmod: now,
+ priority: 0.5,
+ },
+ );
+
+ assert.equal(items.length, 3);
+
+ assert.equal(items[0].url, `${site}/a`);
+ assert.equal(items[0].changefreq, 'monthly');
+ assert.equal(items[0].lastmod, now.toISOString());
+ assert.equal(items[0].priority, 0.5);
+
+ assert.equal(items[1].url, `${site}/b`);
+ assert.equal(items[1].changefreq, 'monthly');
+ assert.equal(items[1].lastmod, now.toISOString());
+ assert.equal(items[1].priority, 0.5);
+
+ assert.equal(items[2].url, `${site}/c`);
+ assert.equal(items[2].changefreq, 'monthly');
+ assert.equal(items[2].lastmod, now.toISOString());
+ assert.equal(items[2].priority, 0.5);
+ });
+ });
+
+ describe('i18n', () => {
+ it('works', () => {
+ const items = generateSitemap(
+ [
+ // All pages
+ `${site}/a`,
+ `${site}/b`,
+ `${site}/c`,
+ `${site}/es/a`,
+ `${site}/es/b`,
+ `${site}/es/c`,
+ `${site}/fr/a`,
+ `${site}/fr/b`,
+ // `${site}/fr-CA/c`, (intentionally missing for testing)
+ ],
+ site,
+ {
+ i18n: {
+ defaultLocale: 'en',
+ locales: {
+ en: 'en-US',
+ es: 'es-ES',
+ fr: 'fr-CA',
+ },
+ },
+ },
+ );
+
+ assert.equal(items.length, 8);
+
+ const aLinks = [
+ { url: `${site}/a`, lang: 'en-US' },
+ { url: `${site}/es/a`, lang: 'es-ES' },
+ { url: `${site}/fr/a`, lang: 'fr-CA' },
+ ];
+ const bLinks = [
+ { url: `${site}/b`, lang: 'en-US' },
+ { url: `${site}/es/b`, lang: 'es-ES' },
+ { url: `${site}/fr/b`, lang: 'fr-CA' },
+ ];
+ const cLinks = [
+ { url: `${site}/c`, lang: 'en-US' },
+ { url: `${site}/es/c`, lang: 'es-ES' },
+ ];
+
+ assert.equal(items[0].url, `${site}/a`);
+ assert.deepEqual(items[0].links, aLinks);
+
+ assert.equal(items[1].url, `${site}/b`);
+ assert.deepEqual(items[1].links, bLinks);
+
+ assert.equal(items[2].url, `${site}/c`);
+ assert.deepEqual(items[2].links, cLinks);
+
+ assert.equal(items[3].url, `${site}/es/a`);
+ assert.deepEqual(items[3].links, aLinks);
+
+ assert.equal(items[4].url, `${site}/es/b`);
+ assert.deepEqual(items[4].links, bLinks);
+
+ assert.equal(items[5].url, `${site}/es/c`);
+ assert.deepEqual(items[5].links, cLinks);
+
+ assert.equal(items[6].url, `${site}/fr/a`);
+ assert.deepEqual(items[6].links, aLinks);
+
+ assert.equal(items[7].url, `${site}/fr/b`);
+ assert.deepEqual(items[7].links, bLinks);
+ });
+ });
+});