Elasticsearch: Fix alias field value not being shown in query editor (#30992)

* Make imports relative

* Fix Alias field value not being shown
This commit is contained in:
Giordano Ricci 2021-02-09 13:55:42 +00:00 committed by GitHub
parent 99e72e65ab
commit b46235715d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 3 deletions

View File

@ -2,8 +2,8 @@ import React from 'react';
import { fireEvent, render, screen } from '@testing-library/react';
import { SettingsEditor } from '.';
import { ElasticsearchProvider } from '../../ElasticsearchQueryContext';
import { ElasticDatasource } from 'app/plugins/datasource/elasticsearch/datasource';
import { ElasticsearchQuery } from 'app/plugins/datasource/elasticsearch/types';
import { ElasticDatasource } from '../../../../datasource';
import { ElasticsearchQuery } from '../../../../types';
describe('Settings Editor', () => {
describe('Raw Data', () => {

View File

@ -0,0 +1,48 @@
import React from 'react';
import { fireEvent, render, screen } from '@testing-library/react';
import { QueryEditor } from '.';
import { ElasticDatasource } from '../../datasource';
import { ElasticsearchQuery } from '../../types';
describe('QueryEditor', () => {
describe('Alias Field', () => {
it('Should correctly render and trigger changes on blur', () => {
const alias = '{{metric}}';
const query: ElasticsearchQuery = {
refId: 'A',
alias,
metrics: [
{
id: '1',
type: 'raw_data',
},
],
bucketAggs: [],
};
const onChange = jest.fn<void, [ElasticsearchQuery]>();
render(
<QueryEditor query={query} datasource={{} as ElasticDatasource} onChange={onChange} onRunQuery={() => {}} />
);
let aliasField = screen.getByLabelText('Alias') as HTMLInputElement;
// The Query should have an alias field
expect(aliasField).toBeInTheDocument();
// its value should match the one in the query
expect(aliasField.value).toBe(alias);
// We change value and trigger a blur event to trigger an update
const newAlias = 'new alias';
fireEvent.change(aliasField, { target: { value: newAlias } });
fireEvent.blur(aliasField);
// the onChange handler should have been called correctly, and the resulting
// query state should match what expected
expect(onChange).toHaveBeenCalledTimes(1);
expect(onChange.mock.calls[0][0].alias).toBe(newAlias);
});
});
});

View File

@ -46,7 +46,12 @@ const QueryEditorForm: FunctionComponent<Props> = ({ value }) => {
/>
</InlineField>
<InlineField label="Alias" labelWidth={15}>
<Input placeholder="Alias Pattern" onBlur={(e) => dispatch(changeAliasPattern(e.currentTarget.value))} />
<Input
id={`ES-query-${value.refId}_alias`}
placeholder="Alias Pattern"
onBlur={(e) => dispatch(changeAliasPattern(e.currentTarget.value))}
defaultValue={value.alias}
/>
</InlineField>
</InlineFieldRow>