mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 01:15:46 +08:00

* 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
66 lines
2.2 KiB
TypeScript
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¶m2=value2')).toBe('/base/test?param1=value1¶m2=value2');
|
|
});
|
|
|
|
it('should create a relative URL with object query parameters', () => {
|
|
expect(createRelativeUrl('/test', { param1: 'value1', param2: 'value2' })).toBe(
|
|
'/base/test?param1=value1¶m2=value2'
|
|
);
|
|
});
|
|
|
|
it('should create a relative URL with array query parameters', () => {
|
|
expect(
|
|
createRelativeUrl('/test', [
|
|
['param1', 'value1'],
|
|
['param2', 'value2'],
|
|
])
|
|
).toBe('/base/test?param1=value1¶m2=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¶m2=value2')).toBe(
|
|
'https://example.com/base/test?param1=value1¶m2=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¶m2=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¶m2=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;
|
|
});
|
|
});
|