mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 15:47:23 +02:00
178 lines
6.4 KiB
TypeScript
178 lines
6.4 KiB
TypeScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import applyTrailingSlash, {
|
|
type ApplyTrailingSlashParams,
|
|
} from '../applyTrailingSlash';
|
|
|
|
function params(
|
|
trailingSlash: boolean | undefined,
|
|
baseUrl: string = '/',
|
|
): ApplyTrailingSlashParams {
|
|
return {trailingSlash, baseUrl};
|
|
}
|
|
|
|
describe('applyTrailingSlash', () => {
|
|
test('should apply to empty', () => {
|
|
expect(applyTrailingSlash('', params(true))).toEqual('/');
|
|
expect(applyTrailingSlash('', params(false))).toEqual('');
|
|
expect(applyTrailingSlash('', params(undefined))).toEqual('');
|
|
});
|
|
|
|
test('should not apply to /', () => {
|
|
expect(applyTrailingSlash('/', params(true))).toEqual('/');
|
|
expect(applyTrailingSlash('/', params(false))).toEqual('/');
|
|
expect(applyTrailingSlash('/', params(undefined))).toEqual('/');
|
|
|
|
expect(applyTrailingSlash('/?query#anchor', params(true))).toEqual(
|
|
'/?query#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/?query#anchor', params(false))).toEqual(
|
|
'/?query#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/?query#anchor', params(undefined))).toEqual(
|
|
'/?query#anchor',
|
|
);
|
|
});
|
|
|
|
test('should not apply to /baseUrl/', () => {
|
|
const baseUrl = '/baseUrl/';
|
|
expect(applyTrailingSlash('/baseUrl/', params(true, baseUrl))).toEqual(
|
|
'/baseUrl/',
|
|
);
|
|
expect(applyTrailingSlash('/baseUrl/', params(false, baseUrl))).toEqual(
|
|
'/baseUrl/',
|
|
);
|
|
expect(applyTrailingSlash('/baseUrl/', params(undefined, baseUrl))).toEqual(
|
|
'/baseUrl/',
|
|
);
|
|
|
|
expect(
|
|
applyTrailingSlash('/baseUrl/?query#anchor', params(true, baseUrl)),
|
|
).toEqual('/baseUrl/?query#anchor');
|
|
expect(
|
|
applyTrailingSlash('/baseUrl/?query#anchor', params(false, baseUrl)),
|
|
).toEqual('/baseUrl/?query#anchor');
|
|
expect(
|
|
applyTrailingSlash('/baseUrl/?query#anchor', params(undefined, baseUrl)),
|
|
).toEqual('/baseUrl/?query#anchor');
|
|
});
|
|
|
|
test('should not apply to #anchor links', () => {
|
|
expect(applyTrailingSlash('#', params(true))).toEqual('#');
|
|
expect(applyTrailingSlash('#', params(false))).toEqual('#');
|
|
expect(applyTrailingSlash('#', params(undefined))).toEqual('#');
|
|
expect(applyTrailingSlash('#anchor', params(true))).toEqual('#anchor');
|
|
expect(applyTrailingSlash('#anchor', params(false))).toEqual('#anchor');
|
|
expect(applyTrailingSlash('#anchor', params(undefined))).toEqual('#anchor');
|
|
});
|
|
|
|
test('should apply to simple paths', () => {
|
|
expect(applyTrailingSlash('abc', params(true))).toEqual('abc/');
|
|
expect(applyTrailingSlash('abc', params(false))).toEqual('abc');
|
|
expect(applyTrailingSlash('abc', params(undefined))).toEqual('abc');
|
|
expect(applyTrailingSlash('abc/', params(true))).toEqual('abc/');
|
|
expect(applyTrailingSlash('abc/', params(false))).toEqual('abc');
|
|
expect(applyTrailingSlash('abc/', params(undefined))).toEqual('abc/');
|
|
expect(applyTrailingSlash('/abc', params(true))).toEqual('/abc/');
|
|
expect(applyTrailingSlash('/abc', params(false))).toEqual('/abc');
|
|
expect(applyTrailingSlash('/abc', params(undefined))).toEqual('/abc');
|
|
expect(applyTrailingSlash('/abc/', params(true))).toEqual('/abc/');
|
|
expect(applyTrailingSlash('/abc/', params(false))).toEqual('/abc');
|
|
expect(applyTrailingSlash('/abc/', params(undefined))).toEqual('/abc/');
|
|
});
|
|
|
|
test('should apply to path with #anchor', () => {
|
|
expect(applyTrailingSlash('/abc#anchor', params(true))).toEqual(
|
|
'/abc/#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc#anchor', params(false))).toEqual(
|
|
'/abc#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc#anchor', params(undefined))).toEqual(
|
|
'/abc#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc/#anchor', params(true))).toEqual(
|
|
'/abc/#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc/#anchor', params(false))).toEqual(
|
|
'/abc#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc/#anchor', params(undefined))).toEqual(
|
|
'/abc/#anchor',
|
|
);
|
|
});
|
|
|
|
test('should apply to path with ?search', () => {
|
|
expect(applyTrailingSlash('/abc?search', params(true))).toEqual(
|
|
'/abc/?search',
|
|
);
|
|
expect(applyTrailingSlash('/abc?search', params(false))).toEqual(
|
|
'/abc?search',
|
|
);
|
|
expect(applyTrailingSlash('/abc?search', params(undefined))).toEqual(
|
|
'/abc?search',
|
|
);
|
|
expect(applyTrailingSlash('/abc/?search', params(true))).toEqual(
|
|
'/abc/?search',
|
|
);
|
|
expect(applyTrailingSlash('/abc/?search', params(false))).toEqual(
|
|
'/abc?search',
|
|
);
|
|
expect(applyTrailingSlash('/abc/?search', params(undefined))).toEqual(
|
|
'/abc/?search',
|
|
);
|
|
});
|
|
|
|
test('should apply to path with ?search#anchor', () => {
|
|
expect(applyTrailingSlash('/abc?search#anchor', params(true))).toEqual(
|
|
'/abc/?search#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc?search#anchor', params(false))).toEqual(
|
|
'/abc?search#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc?search#anchor', params(undefined))).toEqual(
|
|
'/abc?search#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc/?search#anchor', params(true))).toEqual(
|
|
'/abc/?search#anchor',
|
|
);
|
|
expect(applyTrailingSlash('/abc/?search#anchor', params(false))).toEqual(
|
|
'/abc?search#anchor',
|
|
);
|
|
expect(
|
|
applyTrailingSlash('/abc/?search#anchor', params(undefined)),
|
|
).toEqual('/abc/?search#anchor');
|
|
});
|
|
|
|
test('should apply to fully qualified urls', () => {
|
|
expect(
|
|
applyTrailingSlash('https://xyz.com/abc?search#anchor', params(true)),
|
|
).toEqual('https://xyz.com/abc/?search#anchor');
|
|
expect(
|
|
applyTrailingSlash('https://xyz.com/abc?search#anchor', params(false)),
|
|
).toEqual('https://xyz.com/abc?search#anchor');
|
|
expect(
|
|
applyTrailingSlash(
|
|
'https://xyz.com/abc?search#anchor',
|
|
params(undefined),
|
|
),
|
|
).toEqual('https://xyz.com/abc?search#anchor');
|
|
expect(
|
|
applyTrailingSlash('https://xyz.com/abc/?search#anchor', params(true)),
|
|
).toEqual('https://xyz.com/abc/?search#anchor');
|
|
expect(
|
|
applyTrailingSlash('https://xyz.com/abc/?search#anchor', params(false)),
|
|
).toEqual('https://xyz.com/abc?search#anchor');
|
|
expect(
|
|
applyTrailingSlash(
|
|
'https://xyz.com/abc/?search#anchor',
|
|
params(undefined),
|
|
),
|
|
).toEqual('https://xyz.com/abc/?search#anchor');
|
|
});
|
|
});
|