mirror of
https://github.com/withastro/astro.git
synced 2025-01-06 22:10:10 -05:00
72c7ae9901
* update formatter config * format --------- Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com>
147 lines
3.4 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
});
|