From cc74b0cc4f5ace50be8ee0a6e0e42db33044839e Mon Sep 17 00:00:00 2001 From: Virginia Cepeda Date: Wed, 11 Feb 2026 12:19:58 -0300 Subject: [PATCH] fix: normalize empty alertSensitivity from API to none --- src/datasource/DataSource.test.ts | 22 ++++++++++++++++++++++ src/datasource/DataSource.ts | 10 ++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/datasource/DataSource.test.ts b/src/datasource/DataSource.test.ts index f37707b68..a3da544dc 100644 --- a/src/datasource/DataSource.test.ts +++ b/src/datasource/DataSource.test.ts @@ -6,6 +6,7 @@ import { PRIVATE_PROBE } from 'test/fixtures/probes'; import { apiRoute, ApiRoutes, getServerRequests } from 'test/handlers'; import { server } from 'test/server'; +import { AlertSensitivity } from 'types'; import { SMDataSource } from 'datasource/DataSource'; type Entry = { @@ -256,4 +257,25 @@ describe('SMDataSource', () => { expect(result?.uid).toEqual('grafanacloud-metrics'); }); }); + + describe('listChecks', () => { + it('should normalize empty alertSensitivity to AlertSensitivity.None', async () => { + const checkWithEmptySensitivity = { ...BASIC_HTTP_CHECK, alertSensitivity: '' }; + const checkWithSetSensitivity = { ...BASIC_HTTP_CHECK, alertSensitivity: AlertSensitivity.Medium }; + + server.use( + apiRoute('listChecks', { + result: () => ({ + json: [checkWithEmptySensitivity, checkWithSetSensitivity], + }), + }) + ); + + const smDataSource = new SMDataSource(SM_DATASOURCE); + const result = await smDataSource.listChecks(); + + expect(result[0].alertSensitivity).toEqual(AlertSensitivity.None); + expect(result[1].alertSensitivity).toEqual(AlertSensitivity.Medium); + }); + }); }); diff --git a/src/datasource/DataSource.ts b/src/datasource/DataSource.ts index f650295f3..b1a6d1b55 100644 --- a/src/datasource/DataSource.ts +++ b/src/datasource/DataSource.ts @@ -12,7 +12,7 @@ import { BackendSrvRequest, getBackendSrv, getTemplateSrv } from '@grafana/runti import { isArray } from 'lodash'; import { firstValueFrom } from 'rxjs'; -import { Check, CheckAlertDraft, ListChannelsResponse, Probe, ThresholdSettings } from '../types'; +import { AlertSensitivity, Check, CheckAlertDraft, ListChannelsResponse, Probe, ThresholdSettings } from '../types'; import { AccessTokenResponse, AddCheckResult, @@ -311,7 +311,13 @@ export class SMDataSource extends DataSourceApi { } async listChecks(includeAlerts = false) { - return this.fetchAPI(`${this.instanceSettings.url}/sm/check/list?includeAlerts=${includeAlerts}`); + return this.fetchAPI( + `${this.instanceSettings.url}/sm/check/list?includeAlerts=${includeAlerts}` + ).then((checks) => + checks.map((check) => + check.alertSensitivity ? check : { ...check, alertSensitivity: AlertSensitivity.None } + ) + ); } async testCheck(check: Check) {