mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 09:05:45 -06:00
* Add and configure eslint-plugin-import * Fix the lint:ts npm command * Autofix + prettier all the files * Manually fix remaining files * Move jquery code in jest-setup to external file to safely reorder imports * Resolve issue caused by circular dependencies within Prometheus * Update .betterer.results * Fix missing // @ts-ignore * ignore iconBundle.ts * Fix missing // @ts-ignore
116 lines
3.2 KiB
TypeScript
116 lines
3.2 KiB
TypeScript
import { setTemplateSrv } from '@grafana/runtime';
|
|
|
|
import { initTemplateSrv } from '../../../test/helpers/initTemplateSrv';
|
|
|
|
import { variableAdapters } from './adapters';
|
|
import { getVariablesUrlParams } from './getAllVariableValuesForUrl';
|
|
import { createQueryVariableAdapter } from './query/adapter';
|
|
|
|
const key = 'key';
|
|
|
|
describe('getAllVariableValuesForUrl', () => {
|
|
beforeAll(() => {
|
|
variableAdapters.register(createQueryVariableAdapter());
|
|
});
|
|
|
|
describe('with multi value', () => {
|
|
beforeEach(() => {
|
|
setTemplateSrv(
|
|
initTemplateSrv(key, [
|
|
{
|
|
type: 'query',
|
|
name: 'test',
|
|
rootStateKey: key,
|
|
current: { value: ['val1', 'val2'] },
|
|
getValueForUrl: function () {
|
|
return this.current.value;
|
|
},
|
|
},
|
|
])
|
|
);
|
|
});
|
|
|
|
it('should set multiple url params', () => {
|
|
let params: any = getVariablesUrlParams();
|
|
expect(params['var-test']).toMatchObject(['val1', 'val2']);
|
|
});
|
|
});
|
|
|
|
describe('skip url sync', () => {
|
|
beforeEach(() => {
|
|
setTemplateSrv(
|
|
initTemplateSrv(key, [
|
|
{
|
|
name: 'test',
|
|
rootStateKey: key,
|
|
skipUrlSync: true,
|
|
current: { value: 'value' },
|
|
getValueForUrl: function () {
|
|
return this.current.value;
|
|
},
|
|
},
|
|
])
|
|
);
|
|
});
|
|
|
|
it('should not include template variable value in url', () => {
|
|
const params = getVariablesUrlParams();
|
|
expect(params['var-test']).toBe(undefined);
|
|
});
|
|
});
|
|
|
|
describe('with multi value with skip url sync', () => {
|
|
beforeEach(() => {
|
|
setTemplateSrv(
|
|
initTemplateSrv(key, [
|
|
{
|
|
type: 'query',
|
|
name: 'test',
|
|
rootStateKey: key,
|
|
skipUrlSync: true,
|
|
current: { value: ['val1', 'val2'] },
|
|
getValueForUrl: function () {
|
|
return this.current.value;
|
|
},
|
|
},
|
|
])
|
|
);
|
|
});
|
|
|
|
it('should not include template variable value in url', () => {
|
|
const params = getVariablesUrlParams();
|
|
expect(params['var-test']).toBe(undefined);
|
|
});
|
|
});
|
|
|
|
describe('fillVariableValuesForUrl with multi value and scopedVars', () => {
|
|
beforeEach(() => {
|
|
setTemplateSrv(
|
|
initTemplateSrv(key, [{ type: 'query', name: 'test', rootStateKey: key, current: { value: ['val1', 'val2'] } }])
|
|
);
|
|
});
|
|
|
|
it('should set scoped value as url params', () => {
|
|
const params = getVariablesUrlParams({
|
|
test: { value: 'val1', text: 'val1text' },
|
|
});
|
|
expect(params['var-test']).toBe('val1');
|
|
});
|
|
});
|
|
|
|
describe('fillVariableValuesForUrl with multi value, scopedVars and skip url sync', () => {
|
|
beforeEach(() => {
|
|
setTemplateSrv(
|
|
initTemplateSrv(key, [{ type: 'query', name: 'test', rootStateKey: key, current: { value: ['val1', 'val2'] } }])
|
|
);
|
|
});
|
|
|
|
it('should not set scoped value as url params', () => {
|
|
const params = getVariablesUrlParams({
|
|
test: { name: 'test', value: 'val1', text: 'val1text', skipUrlSync: true },
|
|
});
|
|
expect(params['var-test']).toBe(undefined);
|
|
});
|
|
});
|
|
});
|