mirror of https://github.com/grafana/grafana
Elasticsearch: Show Size setting for raw_data metric (#30980)
parent
50da456bd0
commit
0a7c6c689f
@ -0,0 +1,80 @@ |
||||
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'; |
||||
|
||||
describe('Settings Editor', () => { |
||||
describe('Raw Data', () => { |
||||
it('Should correctly render the settings editor and trigger correct state changes', () => { |
||||
const metricId = '1'; |
||||
const initialSize = '500'; |
||||
const query: ElasticsearchQuery = { |
||||
refId: 'A', |
||||
metrics: [ |
||||
{ |
||||
id: metricId, |
||||
type: 'raw_data', |
||||
settings: { |
||||
size: initialSize, |
||||
}, |
||||
}, |
||||
], |
||||
}; |
||||
|
||||
const onChange = jest.fn(); |
||||
|
||||
const { rerender } = render( |
||||
<ElasticsearchProvider |
||||
query={query} |
||||
datasource={{} as ElasticDatasource} |
||||
onChange={onChange} |
||||
onRunQuery={() => {}} |
||||
> |
||||
<SettingsEditor metric={query.metrics![0]} previousMetrics={[]} /> |
||||
</ElasticsearchProvider> |
||||
); |
||||
|
||||
let settingsButtonEl = screen.getByRole('button', { |
||||
name: /Size: \d+$/i, |
||||
}); |
||||
|
||||
// The metric row should have a settings button
|
||||
expect(settingsButtonEl).toBeInTheDocument(); |
||||
expect(settingsButtonEl.textContent).toBe(`Size: ${initialSize}`); |
||||
|
||||
// Open the settings editor
|
||||
fireEvent.click(settingsButtonEl); |
||||
|
||||
// The settings editor should have a Size input
|
||||
const sizeInputEl = screen.getByLabelText('Size'); |
||||
expect(sizeInputEl).toBeInTheDocument(); |
||||
|
||||
// We change value and trigger a blur event to trigger an update
|
||||
const newSizeValue = '23'; |
||||
fireEvent.change(sizeInputEl, { target: { value: newSizeValue } }); |
||||
fireEvent.blur(sizeInputEl); |
||||
|
||||
// the onChange handler should have been called correctly, and the resulting
|
||||
// query state should match what expected
|
||||
expect(onChange).toHaveBeenCalledTimes(1); |
||||
rerender( |
||||
<ElasticsearchProvider |
||||
query={onChange.mock.calls[0][0]} |
||||
datasource={{} as ElasticDatasource} |
||||
onChange={onChange} |
||||
onRunQuery={() => {}} |
||||
> |
||||
<SettingsEditor metric={onChange.mock.calls[0][0].metrics![0]} previousMetrics={[]} /> |
||||
</ElasticsearchProvider> |
||||
); |
||||
|
||||
settingsButtonEl = screen.getByRole('button', { |
||||
name: /Size: \d+$/i, |
||||
}); |
||||
expect(settingsButtonEl).toBeInTheDocument(); |
||||
expect(settingsButtonEl.textContent).toBe(`Size: ${newSizeValue}`); |
||||
}); |
||||
}); |
||||
}); |
Loading…
Reference in new issue