|
@@ -1,177 +1,194 @@
|
|
|
import * as pathUtils from './path-utils';
|
|
import * as pathUtils from './path-utils';
|
|
|
|
|
|
|
|
describe('page-utils', () => {
|
|
describe('page-utils', () => {
|
|
|
-
|
|
|
|
|
describe('.normalizePath', () => {
|
|
describe('.normalizePath', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${'/'}
|
|
|
|
|
- ${''} | ${'/'}
|
|
|
|
|
- ${'path'} | ${'/path'}
|
|
|
|
|
- ${'/path'} | ${'/path'}
|
|
|
|
|
- ${'path/'} | ${'/path'}
|
|
|
|
|
- ${'/path/'} | ${'/path'}
|
|
|
|
|
- ${'path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
- ${'/path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
- ${'path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
- ${'/path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
- ${'//path1/path2//'} | ${'/path1/path2'}
|
|
|
|
|
- ${'https://example.com'} | ${'/https://example.com'}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${'/'}
|
|
|
|
|
+ ${''} | ${'/'}
|
|
|
|
|
+ ${'path'} | ${'/path'}
|
|
|
|
|
+ ${'/path'} | ${'/path'}
|
|
|
|
|
+ ${'path/'} | ${'/path'}
|
|
|
|
|
+ ${'/path/'} | ${'/path'}
|
|
|
|
|
+ ${'path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'/path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'/path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'//path1/path2//'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'https://example.com'} | ${'/https://example.com'}
|
|
|
${'https://example.com/'} | ${'/https://example.com'}
|
|
${'https://example.com/'} | ${'/https://example.com'}
|
|
|
- `('should normalize \'$path\' to \'$expected\'', ({ path, expected }) => {
|
|
|
|
|
|
|
+ `("should normalize '$path' to '$expected'", ({ path, expected }) => {
|
|
|
expect(pathUtils.normalizePath(path)).toBe(expected);
|
|
expect(pathUtils.normalizePath(path)).toBe(expected);
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.hasHeadingSlash', () => {
|
|
describe('.hasHeadingSlash', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${true}
|
|
|
|
|
- ${''} | ${false}
|
|
|
|
|
- ${'path'} | ${false}
|
|
|
|
|
- ${'/path'} | ${true}
|
|
|
|
|
- ${'path/'} | ${false}
|
|
|
|
|
- ${'/path/'} | ${true}
|
|
|
|
|
- ${'path1/path2'} | ${false}
|
|
|
|
|
- ${'/path1/path2'} | ${true}
|
|
|
|
|
- ${'path1/path2/'} | ${false}
|
|
|
|
|
- ${'/path1/path2/'} | ${true}
|
|
|
|
|
- ${'//path1/path2//'} | ${true}
|
|
|
|
|
- ${'https://example.com'} | ${false}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${true}
|
|
|
|
|
+ ${''} | ${false}
|
|
|
|
|
+ ${'path'} | ${false}
|
|
|
|
|
+ ${'/path'} | ${true}
|
|
|
|
|
+ ${'path/'} | ${false}
|
|
|
|
|
+ ${'/path/'} | ${true}
|
|
|
|
|
+ ${'path1/path2'} | ${false}
|
|
|
|
|
+ ${'/path1/path2'} | ${true}
|
|
|
|
|
+ ${'path1/path2/'} | ${false}
|
|
|
|
|
+ ${'/path1/path2/'} | ${true}
|
|
|
|
|
+ ${'//path1/path2//'} | ${true}
|
|
|
|
|
+ ${'https://example.com'} | ${false}
|
|
|
${'https://example.com/'} | ${false}
|
|
${'https://example.com/'} | ${false}
|
|
|
- `('should return $expected when checking heading slash for \'$path\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.hasHeadingSlash(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should return $expected when checking heading slash for '$path'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.hasHeadingSlash(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.hasTrailingSlash', () => {
|
|
describe('.hasTrailingSlash', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${true}
|
|
|
|
|
- ${''} | ${false}
|
|
|
|
|
- ${'path'} | ${false}
|
|
|
|
|
- ${'/path'} | ${false}
|
|
|
|
|
- ${'path/'} | ${true}
|
|
|
|
|
- ${'/path/'} | ${true}
|
|
|
|
|
- ${'path1/path2'} | ${false}
|
|
|
|
|
- ${'/path1/path2'} | ${false}
|
|
|
|
|
- ${'path1/path2/'} | ${true}
|
|
|
|
|
- ${'/path1/path2/'} | ${true}
|
|
|
|
|
- ${'//path1/path2//'} | ${true}
|
|
|
|
|
- ${'https://example.com'} | ${false}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${true}
|
|
|
|
|
+ ${''} | ${false}
|
|
|
|
|
+ ${'path'} | ${false}
|
|
|
|
|
+ ${'/path'} | ${false}
|
|
|
|
|
+ ${'path/'} | ${true}
|
|
|
|
|
+ ${'/path/'} | ${true}
|
|
|
|
|
+ ${'path1/path2'} | ${false}
|
|
|
|
|
+ ${'/path1/path2'} | ${false}
|
|
|
|
|
+ ${'path1/path2/'} | ${true}
|
|
|
|
|
+ ${'/path1/path2/'} | ${true}
|
|
|
|
|
+ ${'//path1/path2//'} | ${true}
|
|
|
|
|
+ ${'https://example.com'} | ${false}
|
|
|
${'https://example.com/'} | ${true}
|
|
${'https://example.com/'} | ${true}
|
|
|
- `('should return $expected when checking trailing slash for \'$path\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.hasTrailingSlash(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should return $expected when checking trailing slash for '$path'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.hasTrailingSlash(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.addHeadingSlash', () => {
|
|
describe('.addHeadingSlash', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${'/'}
|
|
|
|
|
- ${''} | ${'/'}
|
|
|
|
|
- ${'path'} | ${'/path'}
|
|
|
|
|
- ${'/path'} | ${'/path'}
|
|
|
|
|
- ${'path/'} | ${'/path/'}
|
|
|
|
|
- ${'/path/'} | ${'/path/'}
|
|
|
|
|
- ${'path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
- ${'/path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
- ${'path1/path2/'} | ${'/path1/path2/'}
|
|
|
|
|
- ${'/path1/path2/'} | ${'/path1/path2/'}
|
|
|
|
|
- ${'//path1/path2//'} | ${'//path1/path2//'}
|
|
|
|
|
- ${'https://example.com'} | ${'/https://example.com'}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${'/'}
|
|
|
|
|
+ ${''} | ${'/'}
|
|
|
|
|
+ ${'path'} | ${'/path'}
|
|
|
|
|
+ ${'/path'} | ${'/path'}
|
|
|
|
|
+ ${'path/'} | ${'/path/'}
|
|
|
|
|
+ ${'/path/'} | ${'/path/'}
|
|
|
|
|
+ ${'path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'/path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'path1/path2/'} | ${'/path1/path2/'}
|
|
|
|
|
+ ${'/path1/path2/'} | ${'/path1/path2/'}
|
|
|
|
|
+ ${'//path1/path2//'} | ${'//path1/path2//'}
|
|
|
|
|
+ ${'https://example.com'} | ${'/https://example.com'}
|
|
|
${'https://example.com/'} | ${'/https://example.com/'}
|
|
${'https://example.com/'} | ${'/https://example.com/'}
|
|
|
- `('should add heading slash to \'$path\' resulting in \'$expected\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.addHeadingSlash(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should add heading slash to '$path' resulting in '$expected'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.addHeadingSlash(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.addTrailingSlash', () => {
|
|
describe('.addTrailingSlash', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${'/'}
|
|
|
|
|
- ${''} | ${'/'}
|
|
|
|
|
- ${'path'} | ${'path/'}
|
|
|
|
|
- ${'/path'} | ${'/path/'}
|
|
|
|
|
- ${'path/'} | ${'path/'}
|
|
|
|
|
- ${'/path/'} | ${'/path/'}
|
|
|
|
|
- ${'path1/path2'} | ${'path1/path2/'}
|
|
|
|
|
- ${'/path1/path2'} | ${'/path1/path2/'}
|
|
|
|
|
- ${'path1/path2/'} | ${'path1/path2/'}
|
|
|
|
|
- ${'/path1/path2/'} | ${'/path1/path2/'}
|
|
|
|
|
- ${'//path1/path2//'} | ${'//path1/path2//'}
|
|
|
|
|
- ${'https://example.com'} | ${'https://example.com/'}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${'/'}
|
|
|
|
|
+ ${''} | ${'/'}
|
|
|
|
|
+ ${'path'} | ${'path/'}
|
|
|
|
|
+ ${'/path'} | ${'/path/'}
|
|
|
|
|
+ ${'path/'} | ${'path/'}
|
|
|
|
|
+ ${'/path/'} | ${'/path/'}
|
|
|
|
|
+ ${'path1/path2'} | ${'path1/path2/'}
|
|
|
|
|
+ ${'/path1/path2'} | ${'/path1/path2/'}
|
|
|
|
|
+ ${'path1/path2/'} | ${'path1/path2/'}
|
|
|
|
|
+ ${'/path1/path2/'} | ${'/path1/path2/'}
|
|
|
|
|
+ ${'//path1/path2//'} | ${'//path1/path2//'}
|
|
|
|
|
+ ${'https://example.com'} | ${'https://example.com/'}
|
|
|
${'https://example.com/'} | ${'https://example.com/'}
|
|
${'https://example.com/'} | ${'https://example.com/'}
|
|
|
- `('should add trailing slash to \'$path\' resulting in \'$expected\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.addTrailingSlash(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should add trailing slash to '$path' resulting in '$expected'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.addTrailingSlash(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.removeHeadingSlash', () => {
|
|
describe('.removeHeadingSlash', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${'/'}
|
|
|
|
|
- ${''} | ${''}
|
|
|
|
|
- ${'path'} | ${'path'}
|
|
|
|
|
- ${'/path'} | ${'path'}
|
|
|
|
|
- ${'path/'} | ${'path/'}
|
|
|
|
|
- ${'/path/'} | ${'path/'}
|
|
|
|
|
- ${'path1/path2'} | ${'path1/path2'}
|
|
|
|
|
- ${'/path1/path2'} | ${'path1/path2'}
|
|
|
|
|
- ${'path1/path2/'} | ${'path1/path2/'}
|
|
|
|
|
- ${'/path1/path2/'} | ${'path1/path2/'}
|
|
|
|
|
- ${'//path1/path2//'} | ${'path1/path2//'}
|
|
|
|
|
- ${'https://example.com'} | ${'https://example.com'}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${'/'}
|
|
|
|
|
+ ${''} | ${''}
|
|
|
|
|
+ ${'path'} | ${'path'}
|
|
|
|
|
+ ${'/path'} | ${'path'}
|
|
|
|
|
+ ${'path/'} | ${'path/'}
|
|
|
|
|
+ ${'/path/'} | ${'path/'}
|
|
|
|
|
+ ${'path1/path2'} | ${'path1/path2'}
|
|
|
|
|
+ ${'/path1/path2'} | ${'path1/path2'}
|
|
|
|
|
+ ${'path1/path2/'} | ${'path1/path2/'}
|
|
|
|
|
+ ${'/path1/path2/'} | ${'path1/path2/'}
|
|
|
|
|
+ ${'//path1/path2//'} | ${'path1/path2//'}
|
|
|
|
|
+ ${'https://example.com'} | ${'https://example.com'}
|
|
|
${'https://example.com/'} | ${'https://example.com/'}
|
|
${'https://example.com/'} | ${'https://example.com/'}
|
|
|
- ${'//'} | ${'/'} // from former specific test
|
|
|
|
|
- `('should remove heading slash from \'$path\' resulting in \'$expected\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.removeHeadingSlash(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ ${'//'} | ${'/'}
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should remove heading slash from '$path' resulting in '$expected'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.removeHeadingSlash(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.removeTrailingSlash', () => {
|
|
describe('.removeTrailingSlash', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${'/'}
|
|
|
|
|
- ${''} | ${''}
|
|
|
|
|
- ${'path'} | ${'path'}
|
|
|
|
|
- ${'/path'} | ${'/path'}
|
|
|
|
|
- ${'path/'} | ${'path'}
|
|
|
|
|
- ${'/path/'} | ${'/path'}
|
|
|
|
|
- ${'path1/path2'} | ${'path1/path2'}
|
|
|
|
|
- ${'/path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
- ${'path1/path2/'} | ${'path1/path2'}
|
|
|
|
|
- ${'/path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
- ${'//path1/path2//'} | ${'//path1/path2'}
|
|
|
|
|
- ${'https://example.com'} | ${'https://example.com'}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${'/'}
|
|
|
|
|
+ ${''} | ${''}
|
|
|
|
|
+ ${'path'} | ${'path'}
|
|
|
|
|
+ ${'/path'} | ${'/path'}
|
|
|
|
|
+ ${'path/'} | ${'path'}
|
|
|
|
|
+ ${'/path/'} | ${'/path'}
|
|
|
|
|
+ ${'path1/path2'} | ${'path1/path2'}
|
|
|
|
|
+ ${'/path1/path2'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'path1/path2/'} | ${'path1/path2'}
|
|
|
|
|
+ ${'/path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'//path1/path2//'} | ${'//path1/path2'}
|
|
|
|
|
+ ${'https://example.com'} | ${'https://example.com'}
|
|
|
${'https://example.com/'} | ${'https://example.com'}
|
|
${'https://example.com/'} | ${'https://example.com'}
|
|
|
- `('should remove trailing slash from \'$path\' resulting in \'$expected\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.removeTrailingSlash(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should remove trailing slash from '$path' resulting in '$expected'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.removeTrailingSlash(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
describe('.getParentPath', () => {
|
|
describe('.getParentPath', () => {
|
|
|
test.concurrent.each`
|
|
test.concurrent.each`
|
|
|
- path | expected
|
|
|
|
|
- ${'/'} | ${'/'}
|
|
|
|
|
- ${''} | ${'/'}
|
|
|
|
|
- ${'path'} | ${'/'}
|
|
|
|
|
- ${'/path'} | ${'/'}
|
|
|
|
|
- ${'path/'} | ${'/path'}
|
|
|
|
|
- ${'/path/'} | ${'/path'}
|
|
|
|
|
- ${'path1/path2'} | ${'/path1'}
|
|
|
|
|
- ${'/path1/path2'} | ${'/path1'}
|
|
|
|
|
- ${'path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
- ${'/path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
- ${'//path1/path2//'} | ${'/path1/path2'}
|
|
|
|
|
- ${'https://example.com'} | ${'/https:'}
|
|
|
|
|
|
|
+ path | expected
|
|
|
|
|
+ ${'/'} | ${'/'}
|
|
|
|
|
+ ${''} | ${'/'}
|
|
|
|
|
+ ${'path'} | ${'/'}
|
|
|
|
|
+ ${'/path'} | ${'/'}
|
|
|
|
|
+ ${'path/'} | ${'/path'}
|
|
|
|
|
+ ${'/path/'} | ${'/path'}
|
|
|
|
|
+ ${'path1/path2'} | ${'/path1'}
|
|
|
|
|
+ ${'/path1/path2'} | ${'/path1'}
|
|
|
|
|
+ ${'path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'/path1/path2/'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'//path1/path2//'} | ${'/path1/path2'}
|
|
|
|
|
+ ${'https://example.com'} | ${'/https:'}
|
|
|
${'https://example.com/'} | ${'/https://example.com'}
|
|
${'https://example.com/'} | ${'/https://example.com'}
|
|
|
- ${'/page'} | ${'/'} // from former specific test
|
|
|
|
|
- // Note: getParentPath('page') is covered by 'path' -> '/'
|
|
|
|
|
- // Note: getParentPath('/path1/path2') is covered by '/path1/path2' -> '/path1'
|
|
|
|
|
- // Note: getParentPath('/path1/path2/') is covered by '/path1/path2/' -> '/path1/path2'
|
|
|
|
|
- `('should get parent path of \'$path\' as \'$expected\'', ({ path, expected }) => {
|
|
|
|
|
- expect(pathUtils.getParentPath(path)).toBe(expected);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ ${'/page'} | ${'/'}
|
|
|
|
|
+ `(
|
|
|
|
|
+ "should get parent path of '$path' as '$expected'",
|
|
|
|
|
+ ({ path, expected }) => {
|
|
|
|
|
+ expect(pathUtils.getParentPath(path)).toBe(expected);
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|