aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/sitemap/test/trailing-slash.test.js
diff options
context:
space:
mode:
authorGravatar github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> 2025-06-05 14:25:23 +0000
committerGravatar github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> 2025-06-05 14:25:23 +0000
commite586d7d704d475afe3373a1de6ae20d504f79d6d (patch)
tree7e3fa24807cebd48a86bd40f866d792181191ee9 /packages/integrations/sitemap/test/trailing-slash.test.js
downloadastro-e586d7d704d475afe3373a1de6ae20d504f79d6d.tar.gz
astro-e586d7d704d475afe3373a1de6ae20d504f79d6d.tar.zst
astro-e586d7d704d475afe3373a1de6ae20d504f79d6d.zip
Sync from a8e1c0a7402940e0fc5beef669522b315052df1blatest
Diffstat (limited to 'packages/integrations/sitemap/test/trailing-slash.test.js')
-rw-r--r--packages/integrations/sitemap/test/trailing-slash.test.js127
1 files changed, 127 insertions, 0 deletions
diff --git a/packages/integrations/sitemap/test/trailing-slash.test.js b/packages/integrations/sitemap/test/trailing-slash.test.js
new file mode 100644
index 000000000..181f0def5
--- /dev/null
+++ b/packages/integrations/sitemap/test/trailing-slash.test.js
@@ -0,0 +1,127 @@
+import assert from 'node:assert/strict';
+import { before, describe, it } from 'node:test';
+import { loadFixture, readXML } from './test-utils.js';
+
+describe('Trailing slash', () => {
+ /** @type {import('./test-utils').Fixture} */
+ let fixture;
+
+ describe('trailingSlash: ignore', () => {
+ describe('build.format: directory', () => {
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/trailing-slash/',
+ trailingSlash: 'ignore',
+ build: {
+ format: 'directory',
+ },
+ });
+ await fixture.build();
+ });
+
+ it('URLs end with trailing slash', async () => {
+ const data = await readXML(fixture.readFile('/sitemap-0.xml'));
+ const urls = data.urlset.url;
+
+ assert.equal(urls[0].loc[0], 'http://example.com/');
+ assert.equal(urls[1].loc[0], 'http://example.com/one/');
+ assert.equal(urls[2].loc[0], 'http://example.com/two/');
+ });
+ });
+
+ describe('build.format: file', () => {
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/trailing-slash/',
+ trailingSlash: 'ignore',
+ build: {
+ format: 'file',
+ },
+ });
+ await fixture.build();
+ });
+
+ it('URLs do not end with trailing slash', async () => {
+ const data = await readXML(fixture.readFile('/sitemap-0.xml'));
+ const urls = data.urlset.url;
+
+ assert.equal(urls[0].loc[0], 'http://example.com');
+ assert.equal(urls[1].loc[0], 'http://example.com/one');
+ assert.equal(urls[2].loc[0], 'http://example.com/two');
+ });
+ });
+ });
+
+ describe('trailingSlash: never', () => {
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/trailing-slash/',
+ trailingSlash: 'never',
+ });
+ await fixture.build();
+ });
+
+ it('URLs do not end with trailing slash', async () => {
+ const data = await readXML(fixture.readFile('/sitemap-0.xml'));
+ const urls = data.urlset.url;
+
+ assert.equal(urls[0].loc[0], 'http://example.com');
+ assert.equal(urls[1].loc[0], 'http://example.com/one');
+ assert.equal(urls[2].loc[0], 'http://example.com/two');
+ });
+ describe('with base path', () => {
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/trailing-slash/',
+ trailingSlash: 'never',
+ base: '/base',
+ });
+ await fixture.build();
+ });
+
+ it('URLs do not end with trailing slash', async () => {
+ const data = await readXML(fixture.readFile('/sitemap-0.xml'));
+ const urls = data.urlset.url;
+ assert.equal(urls[0].loc[0], 'http://example.com/base');
+ assert.equal(urls[1].loc[0], 'http://example.com/base/one');
+ assert.equal(urls[2].loc[0], 'http://example.com/base/two');
+ });
+ });
+ });
+
+ describe('trailingSlash: always', () => {
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/trailing-slash/',
+ trailingSlash: 'always',
+ });
+ await fixture.build();
+ });
+
+ it('URLs end with trailing slash', async () => {
+ const data = await readXML(fixture.readFile('/sitemap-0.xml'));
+ const urls = data.urlset.url;
+ assert.equal(urls[0].loc[0], 'http://example.com/');
+ assert.equal(urls[1].loc[0], 'http://example.com/one/');
+ assert.equal(urls[2].loc[0], 'http://example.com/two/');
+ });
+ describe('with base path', () => {
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/trailing-slash/',
+ trailingSlash: 'always',
+ base: '/base',
+ });
+ await fixture.build();
+ });
+
+ it('URLs end with trailing slash', async () => {
+ const data = await readXML(fixture.readFile('/sitemap-0.xml'));
+ const urls = data.urlset.url;
+ assert.equal(urls[0].loc[0], 'http://example.com/base/');
+ assert.equal(urls[1].loc[0], 'http://example.com/base/one/');
+ assert.equal(urls[2].loc[0], 'http://example.com/base/two/');
+ });
+ });
+ });
+});