Files
Sonia Aguilar d080a91e8a Alerting: Refactor createUrl and createAbsoluteUrl (#90667)
* Refactor url creatUrl and add tests

* update createUrl to createRelativeUrl in GrafanaRules.tsx

* Add slash if not present in createAbsoluteUrl

* Use template type forcing url parameter to start with slash instead of adding slash if not present

* address review comment
2024-07-31 15:30:35 +02:00

66 lines
2.2 KiB
TypeScript

import { config } from '@grafana/runtime';
import { createAbsoluteUrl, createRelativeUrl } from './url';
config.appSubUrl = '/base';
config.appUrl = 'https://example.com';
describe('createRelativeUrl', () => {
it('should create a relative URL with no query parameters', () => {
expect(createRelativeUrl('/test')).toBe('/base/test');
});
it('should create a relative URL with string query parameters', () => {
expect(createRelativeUrl('/test', 'param1=value1&param2=value2')).toBe('/base/test?param1=value1&param2=value2');
});
it('should create a relative URL with object query parameters', () => {
expect(createRelativeUrl('/test', { param1: 'value1', param2: 'value2' })).toBe(
'/base/test?param1=value1&param2=value2'
);
});
it('should create a relative URL with array query parameters', () => {
expect(
createRelativeUrl('/test', [
['param1', 'value1'],
['param2', 'value2'],
])
).toBe('/base/test?param1=value1&param2=value2');
});
});
describe('createAbsoluteUrl', () => {
it('should create an absolute URL with no query parameters', () => {
expect(createAbsoluteUrl('/test')).toBe('https://example.com/base/test');
});
it('should create an absolute URL with string query parameters', () => {
expect(createAbsoluteUrl('/test', 'param1=value1&param2=value2')).toBe(
'https://example.com/base/test?param1=value1&param2=value2'
);
});
it('should create an absolute URL with object query parameters', () => {
expect(createAbsoluteUrl('/test', { param1: 'value1', param2: 'value2' })).toBe(
'https://example.com/base/test?param1=value1&param2=value2'
);
});
it('should create an absolute URL with array query parameters', () => {
expect(
createAbsoluteUrl('/test', [
['param1', 'value1'],
['param2', 'value2'],
])
).toBe('https://example.com/base/test?param1=value1&param2=value2');
});
it('should fallback to relative URL if base URL is invalid', () => {
const originalAppUrl = config.appUrl;
config.appUrl = 'invalid-url';
expect(createAbsoluteUrl('/test')).toBe('/base/test');
config.appUrl = originalAppUrl;
});
});