mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Templating: global/system variables should be properly replaced in templated values. (#27394)
* Fixed so we try to use the variables in the redux store to replace values in template variables. * First draft of working version. * Including fieldPath when adding :text format. * cleaned up code by introducing helper function. * some minor refactoring. * Added tests and support for multi variables. * added test and code to handle the All scenario of a multivariable. * fixed according to feedback. * added docs. * added text format to gdev dashboard. * updated e2e tests. * make sure we use the same function for formatting och variable lable. * increased the number to 22. * changed label for tests to be All. * existing format should be respected.
This commit is contained in:
@@ -95,11 +95,18 @@ describe('templateSrv', () => {
|
||||
expect(target).toBe('this.asd.filters');
|
||||
});
|
||||
|
||||
it('should replace ${test:glob} with scoped text', () => {
|
||||
it('should replace ${test.name} with scoped text', () => {
|
||||
const target = _templateSrv.replaceWithText('this.${test.name}.filters', {
|
||||
test: { value: { name: 'mupp' }, text: 'asd' },
|
||||
});
|
||||
expect(target).toBe('this.mupp.filters');
|
||||
});
|
||||
|
||||
it('should not replace ${test:glob} with scoped text', () => {
|
||||
const target = _templateSrv.replaceWithText('this.${test:glob}.filters', {
|
||||
test: { value: 'mupp', text: 'asd' },
|
||||
});
|
||||
expect(target).toBe('this.asd.filters');
|
||||
expect(target).toBe('this.mupp.filters');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -595,6 +602,45 @@ describe('templateSrv', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('replaceWithText can pass all / multi value', () => {
|
||||
beforeEach(() => {
|
||||
initTemplateSrv([
|
||||
{
|
||||
type: 'query',
|
||||
name: 'server',
|
||||
current: { value: ['server1', 'server2'], text: ['Server 1', 'Server 2'] },
|
||||
},
|
||||
{
|
||||
type: 'textbox',
|
||||
name: 'empty_on_init',
|
||||
current: { value: '', text: '' },
|
||||
},
|
||||
{
|
||||
type: 'query',
|
||||
name: 'databases',
|
||||
current: { value: '$__all', text: '' },
|
||||
options: [{ value: '$__all' }, { value: 'db1', text: 'Database 1' }, { value: 'db2', text: 'Database 2' }],
|
||||
},
|
||||
]);
|
||||
_templateSrv.updateIndex();
|
||||
});
|
||||
|
||||
it('should replace with text with variable label', () => {
|
||||
const target = _templateSrv.replaceWithText('Server: $server');
|
||||
expect(target).toBe('Server: Server 1 + Server 2');
|
||||
});
|
||||
|
||||
it('should replace empty string-values with an empty string', () => {
|
||||
const target = _templateSrv.replaceWithText('Hello $empty_on_init');
|
||||
expect(target).toBe('Hello ');
|
||||
});
|
||||
|
||||
it('should replace $__all with All', () => {
|
||||
const target = _templateSrv.replaceWithText('Db: $databases');
|
||||
expect(target).toBe('Db: All');
|
||||
});
|
||||
});
|
||||
|
||||
describe('built in interval variables', () => {
|
||||
beforeEach(() => {
|
||||
initTemplateSrv([]);
|
||||
|
||||
Reference in New Issue
Block a user