grafana/public/app/features/templating/macroRegistry.test.ts
Victor Colomb 2489e3524d
Variables: Add support for $__timezone template variable (#66785)
Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-05-09 15:21:28 +02:00

71 lines
2.1 KiB
TypeScript

import { initTemplateSrv } from 'test/helpers/initTemplateSrv';
import { DataLinkBuiltInVars } from '@grafana/data';
import { getTemplateSrv, setTemplateSrv } from '@grafana/runtime';
import { setTimeSrv, TimeSrv } from '../dashboard/services/TimeSrv';
import { TimeModel } from '../dashboard/state/TimeModel';
import { variableAdapters } from '../variables/adapters';
import { createQueryVariableAdapter } from '../variables/query/adapter';
describe('__all_variables', () => {
beforeAll(() => {
variableAdapters.register(createQueryVariableAdapter());
setTemplateSrv(
initTemplateSrv('hello', [
{
type: 'query',
name: 'test',
rootStateKey: 'hello',
current: { value: ['val1', 'val2'] },
getValueForUrl: function () {
return this.current.value;
},
},
])
);
});
it('should interpolate correctly', () => {
const out = getTemplateSrv().replace(`/d/1?$${DataLinkBuiltInVars.includeVars}`);
expect(out).toBe('/d/1?var-test=val1&var-test=val2');
});
it('should interpolate and take scopedVars into account', () => {
const out = getTemplateSrv().replace(`/d/1?$${DataLinkBuiltInVars.includeVars}`, { test: { value: 'val3' } });
expect(out).toBe('/d/1?var-test=val3');
});
});
describe('__url_time_range', () => {
beforeAll(() => {
setTimeSrv({
timeRangeForUrl: () => ({
from: 1607687293000,
to: 1607687293100,
}),
} as any);
});
it('should interpolate to url params', () => {
const out = getTemplateSrv().replace(`/d/1?$${DataLinkBuiltInVars.keepTime}`);
expect(out).toBe('/d/1?from=1607687293000&to=1607687293100');
});
});
describe('__timezone', () => {
beforeAll(() => {
setTimeSrv({
timeModel: {
getTimezone: () => 'Pacific/Noumea',
} as TimeModel,
} as TimeSrv);
});
it('should interpolate to time zone', () => {
const out = getTemplateSrv().replace(`TIMEZONE('$__timezone', '2023-04-19 00:00:00')`);
expect(out).toBe(`TIMEZONE('Pacific/Noumea', '2023-04-19 00:00:00')`);
});
});