mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Loki: Fix fetching of label names if no previous equality operator (#82582)
This commit is contained in:
parent
1eebd2a4de
commit
7ec97f4ad8
@ -107,6 +107,27 @@ describe('LokiQueryBuilder', () => {
|
||||
expect(props.datasource.languageProvider.fetchSeriesLabels).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('uses fetchLabels preselected label have regex equality matcher with match everything value (.*)', async () => {
|
||||
const props = createDefaultProps();
|
||||
props.datasource.getDataSamples = jest.fn().mockResolvedValue([]);
|
||||
props.datasource.languageProvider.fetchSeriesLabels = jest.fn();
|
||||
props.datasource.languageProvider.fetchLabels = jest.fn().mockReturnValue(['a', 'b']);
|
||||
|
||||
const query: LokiVisualQuery = {
|
||||
labels: [
|
||||
{ op: '=~', label: 'cluster', value: '.*' },
|
||||
{ op: '=', label: 'job', value: 'grafana' },
|
||||
],
|
||||
operations: [],
|
||||
};
|
||||
render(<LokiQueryBuilder {...props} query={query} />);
|
||||
const labels = screen.getByText(/Label filters/);
|
||||
const selects = getAllByRole(getSelectParent(labels)!, 'combobox');
|
||||
await userEvent.click(selects[3]);
|
||||
expect(props.datasource.languageProvider.fetchLabels).toBeCalledWith({ timeRange: mockTimeRange });
|
||||
expect(props.datasource.languageProvider.fetchSeriesLabels).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('uses fetchSeriesLabels preselected label have regex equality matcher', async () => {
|
||||
const props = createDefaultProps();
|
||||
props.datasource.getDataSamples = jest.fn().mockResolvedValue([]);
|
||||
|
@ -58,7 +58,10 @@ export const LokiQueryBuilder = React.memo<Props>(
|
||||
const onGetLabelNames = async (forLabel: Partial<QueryBuilderLabelFilter>): Promise<string[]> => {
|
||||
const labelsToConsider = query.labels.filter((x) => x !== forLabel);
|
||||
|
||||
if (labelsToConsider.length === 0) {
|
||||
const hasEqualityOperation = labelsToConsider.find(
|
||||
(filter) => filter.op === '=' || (filter.op === '=~' && new RegExp(filter.value).test('') === false)
|
||||
);
|
||||
if (labelsToConsider.length === 0 || !hasEqualityOperation) {
|
||||
return await datasource.languageProvider.fetchLabels({ timeRange });
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user