grafana/public/app/features/variables/textbox/adapter.test.ts
Hugo Häggmark 3dcfe54d8d
Variables: Fixes Textbox current value persistence (#29481)
* Variables: Fixes savequery for Constant and TextBox variables

* Refactor: reverts textbox changes

* Refactor: Fixes dashboard export and tests

* Refactor: hides or migrates Constant variables

* Tests: fixes snapshots

* Variables: Fixes Textbox current value persistance

* Refactor: fixes PR comments and adds e2e tests
2020-12-02 14:08:35 +01:00

85 lines
2.7 KiB
TypeScript

import { variableAdapters } from '../adapters';
import { createTextBoxVariableAdapter } from './adapter';
import { textboxBuilder } from '../shared/testing/builders';
import { VariableHide } from '../types';
variableAdapters.setInit(() => [createTextBoxVariableAdapter()]);
describe('createTextBoxVariableAdapter', () => {
describe('getSaveModel', () => {
describe('when called and query differs from the original query and not saving current as default', () => {
it('then the model should be correct', () => {
const text = textboxBuilder()
.withId('text')
.withName('text')
.withQuery('query')
.withOriginalQuery('original')
.withCurrent('query')
.withOptions('query')
.build();
const adapter = variableAdapters.get('textbox');
const result = adapter.getSaveModel(text, false);
expect(result).toEqual({
name: 'text',
query: 'original',
current: { selected: false, text: 'original', value: 'original' },
options: [{ selected: false, text: 'original', value: 'original' }],
type: 'textbox',
label: null,
hide: VariableHide.dontHide,
skipUrlSync: false,
error: null,
description: null,
});
});
});
describe('when called and query differs from the original query and saving current as default', () => {
it('then the model should be correct', () => {
const text = textboxBuilder()
.withId('text')
.withName('text')
.withQuery('query')
.withOriginalQuery('original')
.withCurrent('query')
.withOptions('query')
.build();
const adapter = variableAdapters.get('textbox');
const result = adapter.getSaveModel(text, true);
expect(result).toEqual({
name: 'text',
query: 'query',
current: { selected: true, text: 'query', value: 'query' },
options: [{ selected: false, text: 'query', value: 'query' }],
type: 'textbox',
label: null,
hide: VariableHide.dontHide,
skipUrlSync: false,
error: null,
description: null,
});
});
});
});
describe('beforeAdding', () => {
describe('when called', () => {
it('then originalQuery should be same added', () => {
const model = { name: 'text', query: 'a query' };
const adapter = variableAdapters.get('textbox');
const result = adapter.beforeAdding!(model);
expect(result).toEqual({ name: 'text', query: 'a query', originalQuery: 'a query' });
});
});
});
});