45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
import absoluteUrl from './absoluteUrl';
|
|
|
|
describe('absoluteUrl', () => {
|
|
test('should return /path_1/path_2/path_3/path_to_destination when the window.location.origin is http://dummy.com/path_1/path_2 and the path is /path_3/path_to_destination', () => {
|
|
let global = {
|
|
window: Object.create(window),
|
|
};
|
|
const url = 'http://dummy.com/path_1/path_2';
|
|
Object.defineProperty(window, 'location', {
|
|
value: {
|
|
origin: url,
|
|
},
|
|
writable: true,
|
|
});
|
|
const absoluteUrlOutput = absoluteUrl('/path_3/path_to_destination');
|
|
expect(absoluteUrlOutput).toEqual('/path_1/path_2/path_3/path_to_destination');
|
|
});
|
|
|
|
test('should return / when the path is not defined', () => {
|
|
const absoluteUrlOutput = absoluteUrl(undefined);
|
|
expect(absoluteUrlOutput).toBe('/');
|
|
});
|
|
|
|
test('should return the original path when there path in the window.origin after the domain and port', () => {
|
|
delete global.window.location;
|
|
const url = 'http://dummy.com';
|
|
global.window.location = {
|
|
origin: url,
|
|
};
|
|
const absoluteUrlOutput = absoluteUrl('path_1/path_2/path_3');
|
|
expect(absoluteUrlOutput).toEqual('/path_1/path_2/path_3');
|
|
});
|
|
|
|
test('should be able to return the absolute path even when the path contains duplicates', () => {
|
|
global.window ||= Object.create(window);
|
|
const url = 'http://dummy.com';
|
|
delete global.window.location;
|
|
global.window.location = {
|
|
origin: url,
|
|
};
|
|
const absoluteUrlOutput = absoluteUrl('path_1/path_1/path_1');
|
|
expect(absoluteUrlOutput).toEqual('/path_1/path_1/path_1');
|
|
});
|
|
});
|