From bcc5d29bf7ac050dbcb5c867d2df57bb6742078d Mon Sep 17 00:00:00 2001 From: Andrei <55236384+416e64726579@users.noreply.github.com> Date: Fri, 14 Nov 2025 11:52:45 +0100 Subject: [PATCH] Loki: Apply default_manage_alerts_ui_toggle config (#112297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Datasources: Apply default_manage_alerts_ui_toggle config to Loki datasource - Update AlertingSettings component to use config.defaultDatasourceManageAlertsUiToggle - Change from options.jsonData.manageAlerts !== false to nullish coalescing operator - Add comprehensive tests for config behavior - Ensures consistency with Prometheus datasource implementation from PR #98441 Co-authored-by: Zoltán Bedi --- .../configuration/AlertingSettings.test.tsx | 41 +++++++++++++++++++ .../loki/configuration/AlertingSettings.tsx | 3 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/loki/configuration/AlertingSettings.test.tsx b/public/app/plugins/datasource/loki/configuration/AlertingSettings.test.tsx index abca10f84dc..74940a1ac96 100644 --- a/public/app/plugins/datasource/loki/configuration/AlertingSettings.test.tsx +++ b/public/app/plugins/datasource/loki/configuration/AlertingSettings.test.tsx @@ -1,6 +1,8 @@ import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; +import { config } from '@grafana/runtime'; + import { createDefaultConfigOptions } from '../mocks/datasource'; import { AlertingSettings } from './AlertingSettings'; @@ -19,4 +21,43 @@ describe('AlertingSettings', () => { await userEvent.click(screen.getByRole('switch')); expect(onChange).toHaveBeenCalledTimes(1); }); + + describe('Switch checked behavior', () => { + describe('when options.jsonData.manageAlerts is unset', () => { + it('uses the config default `true`', () => { + const testOptions = createDefaultConfigOptions(); + testOptions.jsonData.manageAlerts = undefined; + + config.defaultDatasourceManageAlertsUiToggle = true; + + render( {}} />); + + expect(screen.getByRole('switch')).toBeChecked(); + }); + + it('uses the config default `false`', () => { + const testOptions = createDefaultConfigOptions(); + testOptions.jsonData.manageAlerts = undefined; + + config.defaultDatasourceManageAlertsUiToggle = false; + + render( {}} />); + + expect(screen.getByRole('switch')).not.toBeChecked(); + }); + }); + + describe('when options.jsonData.manageAlerts is set', () => { + it.each([true, false])('uses the manageAlerts value even when the config default is %s', (configDefault) => { + const testOptions = createDefaultConfigOptions(); + testOptions.jsonData.manageAlerts = true; + + config.defaultDatasourceManageAlertsUiToggle = configDefault; + + render( {}} />); + + expect(screen.getByRole('switch')).toBeChecked(); + }); + }); + }); }); diff --git a/public/app/plugins/datasource/loki/configuration/AlertingSettings.tsx b/public/app/plugins/datasource/loki/configuration/AlertingSettings.tsx index 950b5ca8e7a..8f4b845d21d 100644 --- a/public/app/plugins/datasource/loki/configuration/AlertingSettings.tsx +++ b/public/app/plugins/datasource/loki/configuration/AlertingSettings.tsx @@ -1,5 +1,6 @@ import { DataSourcePluginOptionsEditorProps } from '@grafana/data'; import { ConfigDescriptionLink, ConfigSubSection } from '@grafana/plugin-ui'; +import { config } from '@grafana/runtime'; import { InlineField, InlineSwitch } from '@grafana/ui'; export function AlertingSettings({ @@ -24,7 +25,7 @@ export function AlertingSettings({ tooltip="Manage alert rules for this data source. To manage other alerting resources, add an Alertmanager data source." > onOptionsChange({ ...options,