Files
SCM-Manager/scm-ui/ui-components/src/urls.test.ts

73 lines
1.8 KiB
TypeScript
Raw Normal View History

import {
concat,
getPageFromMatch,
getQueryStringFromLocation,
withEndingSlash,
} from './urls';
describe('tests for withEndingSlash', () => {
it('should append missing slash', () => {
expect(withEndingSlash('abc')).toBe('abc/');
});
it('should not append a second slash', () => {
expect(withEndingSlash('abc/')).toBe('abc/');
});
});
describe('concat tests', () => {
it('should concat the parts to a single url', () => {
expect(concat('a')).toBe('a');
expect(concat('a', 'b')).toBe('a/b');
expect(concat('a', 'b', 'c')).toBe('a/b/c');
});
});
describe('tests for getPageFromMatch', () => {
function createMatch(page: string) {
return {
params: {
page,
},
};
}
it('should return 1 for NaN', () => {
const match = createMatch('any');
expect(getPageFromMatch(match)).toBe(1);
});
it('should return 1 for 0', () => {
const match = createMatch('0');
expect(getPageFromMatch(match)).toBe(1);
});
it('should return the given number', () => {
const match = createMatch('42');
expect(getPageFromMatch(match)).toBe(42);
});
});
describe('tests for getQueryStringFromLocation', () => {
function createLocation(search: string) {
return {
search,
};
}
it('should return the query string', () => {
const location = createLocation('?q=abc');
expect(getQueryStringFromLocation(location)).toBe('abc');
});
it('should return query string from multiple parameters', () => {
const location = createLocation('?x=a&y=b&q=abc&z=c');
expect(getQueryStringFromLocation(location)).toBe('abc');
});
it('should return undefined if q is not available', () => {
const location = createLocation('?x=a&y=b&z=c');
expect(getQueryStringFromLocation(location)).toBeUndefined();
});
});