diff --git a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx
index af079083213..fa36b1f81b2 100644
--- a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx
+++ b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.test.tsx
@@ -1,5 +1,7 @@
import { render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import React from 'react';
+import { openMenu } from 'react-select-event';
import { createMockDatasource } from '../__mocks__/cloudMonitoringDatasource';
import { createMockQuery } from '../__mocks__/cloudMonitoringQuery';
@@ -77,4 +79,33 @@ describe('MetricQueryEditor', () => {
render();
await waitFor(() => expect(screen.getByLabelText('Alias by').closest('input')!.value).toEqual('AliasTest'));
});
+
+ it('runs a timeSeriesList query if there are no filters', async () => {
+ const onRunQuery = jest.fn();
+ const onChange = jest.fn();
+ const query = createMockQuery();
+
+ render();
+
+ const groupBy = screen.getByLabelText('Group by');
+ openMenu(groupBy);
+ const option = 'metadata.system_labels.cloud_account';
+ await userEvent.click(screen.getByText(option));
+
+ expect(onRunQuery).toHaveBeenCalledTimes(1);
+ expect(onChange).toHaveBeenCalledTimes(1);
+ });
+
+ it('does not run a timeSeriesList query when filter is added', async () => {
+ const onRunQuery = jest.fn();
+ const onChange = jest.fn();
+ const query = createMockQuery();
+
+ render();
+
+ const addFilter = screen.getByLabelText('Add');
+ await userEvent.click(addFilter);
+ expect(onRunQuery).toHaveBeenCalledTimes(0);
+ expect(onChange).toHaveBeenCalledTimes(1);
+ });
});
diff --git a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx
index ea3e20a3a79..94268d08450 100644
--- a/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx
+++ b/public/app/plugins/datasource/cloud-monitoring/components/MetricQueryEditor.tsx
@@ -48,8 +48,19 @@ function Editor({
}: React.PropsWithChildren) {
const onChangeTimeSeriesList = useCallback(
(timeSeriesList: TimeSeriesList) => {
+ let filtersComplete = true;
+ if (timeSeriesList?.filters && timeSeriesList.filters.length > 0) {
+ for (const filter of timeSeriesList.filters) {
+ if (filter === '') {
+ filtersComplete = false;
+ break;
+ }
+ }
+ }
onQueryChange({ ...query, timeSeriesList });
- onRunQuery();
+ if (filtersComplete) {
+ onRunQuery();
+ }
},
[onQueryChange, onRunQuery, query]
);