0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-01-06 22:10:10 -05:00
astro/packages/integrations/sitemap/test/units/generate-sitemap.test.js
Darius 72c7ae9901
update formatter config (#11640)
* update formatter config

* format

---------

Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com>
2024-08-08 12:12:50 +02:00

147 lines
3.4 KiB
JavaScript

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);
});
});
});