Skip to content

Commit a421f55

Browse files
authored
Azure: Fix time management field (#107993)
* Fix mode setting * Update selector * Add tests * Fix condition
1 parent 52f6104 commit a421f55

File tree

4 files changed

+80
-3
lines changed

4 files changed

+80
-3
lines changed

public/app/plugins/datasource/azuremonitor/components/LogsQueryBuilder/LogsQueryBuilder.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export const LogsQueryBuilder: React.FC<LogsQueryBuilderProps> = (props) => {
131131
);
132132

133133
return (
134-
<span data-testid={selectors.components.queryEditor.logsQueryEditor.container.input}>
134+
<span data-testid={selectors.components.queryEditor.logsQueryBuilder.container.input}>
135135
<EditorRows>
136136
{schema && tables.length === 0 && (
137137
<Alert

public/app/plugins/datasource/azuremonitor/components/QueryEditor/QueryEditor.test.tsx

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render, screen, waitFor } from '@testing-library/react';
1+
import { render, screen, waitFor, cleanup } from '@testing-library/react';
22

33
import { CoreApp } from '@grafana/data';
44
import { config } from '@grafana/runtime';
@@ -39,6 +39,15 @@ jest.mock('@grafana/runtime', () => ({
3939
}));
4040

4141
describe('Azure Monitor QueryEditor', () => {
42+
beforeEach(() => {
43+
config.featureToggles = {};
44+
});
45+
46+
afterEach(() => {
47+
cleanup();
48+
jest.clearAllMocks();
49+
});
50+
4251
it('renders the Metrics query editor when the query type is Metrics', async () => {
4352
const mockDatasource = createMockDatasource();
4453
const mockQuery = {
@@ -67,6 +76,65 @@ describe('Azure Monitor QueryEditor', () => {
6776
);
6877
});
6978

79+
it('renders the Logs code editor when there is an existing query and the builder is enabled', async () => {
80+
config.featureToggles.azureMonitorLogsBuilderEditor = true;
81+
const mockDatasource = createMockDatasource();
82+
const mockQuery = {
83+
...createMockQuery(),
84+
queryType: AzureQueryType.LogAnalytics,
85+
};
86+
87+
render(<QueryEditor query={mockQuery} datasource={mockDatasource} onChange={() => {}} onRunQuery={() => {}} />);
88+
await waitFor(() => {
89+
expect(
90+
screen.queryByTestId(selectors.components.queryEditor.logsQueryEditor.container.input)
91+
).toBeInTheDocument();
92+
expect(
93+
screen.queryByTestId(selectors.components.queryEditor.logsQueryBuilder.container.input)
94+
).not.toBeInTheDocument();
95+
});
96+
});
97+
98+
it('renders the Logs code editor when there is no existing query and the builder is disabled', async () => {
99+
config.featureToggles.azureMonitorLogsBuilderEditor = false;
100+
const mockDatasource = createMockDatasource();
101+
const mockQuery = {
102+
...createMockQuery(),
103+
queryType: AzureQueryType.LogAnalytics,
104+
};
105+
delete mockQuery.azureLogAnalytics?.query;
106+
107+
render(<QueryEditor query={mockQuery} datasource={mockDatasource} onChange={() => {}} onRunQuery={() => {}} />);
108+
await waitFor(() => {
109+
expect(
110+
screen.queryByTestId(selectors.components.queryEditor.logsQueryEditor.container.input)
111+
).toBeInTheDocument();
112+
expect(
113+
screen.queryByTestId(selectors.components.queryEditor.logsQueryBuilder.container.input)
114+
).not.toBeInTheDocument();
115+
});
116+
});
117+
118+
it('renders the Logs builder when there is no existing query and the builder is enabled', async () => {
119+
config.featureToggles.azureMonitorLogsBuilderEditor = true;
120+
const mockDatasource = createMockDatasource();
121+
const mockQuery = {
122+
...createMockQuery(),
123+
queryType: AzureQueryType.LogAnalytics,
124+
};
125+
delete mockQuery.azureLogAnalytics?.query;
126+
127+
render(<QueryEditor query={mockQuery} datasource={mockDatasource} onChange={() => {}} onRunQuery={() => {}} />);
128+
await waitFor(() => {
129+
expect(
130+
screen.queryByTestId(selectors.components.queryEditor.logsQueryEditor.container.input)
131+
).toBeInTheDocument();
132+
expect(
133+
screen.queryByTestId(selectors.components.queryEditor.logsQueryBuilder.container.input)
134+
).not.toBeInTheDocument();
135+
});
136+
});
137+
70138
it('renders the ARG query editor when the query type is ARG', async () => {
71139
const mockDatasource = createMockDatasource();
72140
const mockQuery = {

public/app/plugins/datasource/azuremonitor/components/QueryEditor/QueryHeader.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@ export const QueryHeader = ({
6464
...query,
6565
azureLogAnalytics: {
6666
...query.azureLogAnalytics,
67-
mode: LogsEditorMode.Builder,
67+
// Builder mode is default unless there is an existing Log Analytics query
68+
// that was not created with the builder
69+
mode:
70+
(query.azureLogAnalytics?.builderQuery === undefined && query.azureLogAnalytics?.query !== undefined) ||
71+
!config.featureToggles.azureMonitorLogsBuilderEditor
72+
? LogsEditorMode.Raw
73+
: LogsEditorMode.Builder,
6874
dashboardTime: true,
6975
},
7076
};

public/app/plugins/datasource/azuremonitor/e2e/selectors.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ export const components = {
8080
button: 'data-testid run-query',
8181
},
8282
},
83+
logsQueryBuilder: {
84+
container: { input: 'data-testid azure-monitor-logs-query-builder' },
85+
},
8386
argsQueryEditor: {
8487
container: {
8588
input: 'data-testid azure-monitor-arg-query-editor',

0 commit comments

Comments
 (0)