trailing-slash.test.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import { loadFixture, readXML } from './test-utils.js';
  2. import assert from 'node:assert/strict';
  3. import { before, describe, it } from 'node:test';
  4. describe('Trailing slash', () => {
  5. /** @type {import('./test-utils').Fixture} */
  6. let fixture;
  7. describe('trailingSlash: ignore', () => {
  8. describe('build.format: directory', () => {
  9. before(async () => {
  10. fixture = await loadFixture({
  11. root: './fixtures/trailing-slash/',
  12. trailingSlash: 'ignore',
  13. build: {
  14. format: 'directory',
  15. },
  16. });
  17. await fixture.build();
  18. });
  19. it('URLs end with trailing slash', async () => {
  20. const data = await readXML(fixture.readFile('/sitemap-0.xml'));
  21. const urls = data.urlset.url;
  22. assert.equal(urls[0].loc[0], 'http://example.com/one/');
  23. });
  24. });
  25. describe('build.format: file', () => {
  26. before(async () => {
  27. fixture = await loadFixture({
  28. root: './fixtures/trailing-slash/',
  29. trailingSlash: 'ignore',
  30. build: {
  31. format: 'file',
  32. },
  33. });
  34. await fixture.build();
  35. });
  36. it('URLs do not end with trailing slash', async () => {
  37. const data = await readXML(fixture.readFile('/sitemap-0.xml'));
  38. const urls = data.urlset.url;
  39. assert.equal(urls[0].loc[0], 'http://example.com/one');
  40. });
  41. });
  42. });
  43. describe('trailingSlash: never', () => {
  44. before(async () => {
  45. fixture = await loadFixture({
  46. root: './fixtures/trailing-slash/',
  47. trailingSlash: 'never',
  48. });
  49. await fixture.build();
  50. });
  51. it('URLs do no end with trailing slash', async () => {
  52. const data = await readXML(fixture.readFile('/sitemap-0.xml'));
  53. const urls = data.urlset.url;
  54. assert.equal(urls[0].loc[0], 'http://example.com/one');
  55. });
  56. describe('with base path', () => {
  57. before(async () => {
  58. fixture = await loadFixture({
  59. root: './fixtures/trailing-slash/',
  60. trailingSlash: 'never',
  61. base: '/base',
  62. });
  63. await fixture.build();
  64. });
  65. it('URLs do not end with trailing slash', async () => {
  66. const data = await readXML(fixture.readFile('/sitemap-0.xml'));
  67. const urls = data.urlset.url;
  68. assert.equal(urls[0].loc[0], 'http://example.com/base/one');
  69. });
  70. });
  71. });
  72. describe('trailingSlash: always', () => {
  73. before(async () => {
  74. fixture = await loadFixture({
  75. root: './fixtures/trailing-slash/',
  76. trailingSlash: 'always',
  77. });
  78. await fixture.build();
  79. });
  80. it('URLs end with trailing slash', async () => {
  81. const data = await readXML(fixture.readFile('/sitemap-0.xml'));
  82. const urls = data.urlset.url;
  83. assert.equal(urls[0].loc[0], 'http://example.com/one/');
  84. });
  85. describe('with base path', () => {
  86. before(async () => {
  87. fixture = await loadFixture({
  88. root: './fixtures/trailing-slash/',
  89. trailingSlash: 'always',
  90. base: '/base',
  91. });
  92. await fixture.build();
  93. });
  94. it('URLs end with trailing slash', async () => {
  95. const data = await readXML(fixture.readFile('/sitemap-0.xml'));
  96. const urls = data.urlset.url;
  97. assert.equal(urls[0].loc[0], 'http://example.com/base/one/');
  98. });
  99. });
  100. });
  101. });