@@ -1330,3 +1330,86 @@ func TestConvertAlertQueries(t *testing.T) {
13301330 require .Equal (t , models .Duration (1800 ), result [0 ].RelativeTimeRange .To )
13311331 })
13321332}
1333+
1334+ func TestExtractQuerySummaries (t * testing.T ) {
1335+ t .Run ("extracts expr field (Prometheus)" , func (t * testing.T ) {
1336+ data := []* models.AlertQuery {
1337+ {
1338+ RefID : "A" ,
1339+ DatasourceUID : "prometheus-uid" ,
1340+ Model : map [string ]any {
1341+ "expr" : `up{job="grafana"}` ,
1342+ },
1343+ },
1344+ }
1345+ summaries := extractQuerySummaries (data )
1346+ require .Len (t , summaries , 1 )
1347+ require .Equal (t , `up{job="grafana"}` , summaries [0 ].Expression )
1348+ })
1349+
1350+ t .Run ("extracts expression field (Grafana expression)" , func (t * testing.T ) {
1351+ data := []* models.AlertQuery {
1352+ {
1353+ RefID : "B" ,
1354+ DatasourceUID : "__expr__" ,
1355+ Model : map [string ]any {
1356+ "expression" : "A" ,
1357+ },
1358+ },
1359+ }
1360+ summaries := extractQuerySummaries (data )
1361+ require .Len (t , summaries , 1 )
1362+ require .Equal (t , "A" , summaries [0 ].Expression )
1363+ })
1364+
1365+ t .Run ("extracts query field (Elasticsearch)" , func (t * testing.T ) {
1366+ data := []* models.AlertQuery {
1367+ {
1368+ RefID : "A" ,
1369+ DatasourceUID : "elasticsearch-uid" ,
1370+ Model : map [string ]any {
1371+ "query" : `app:"random-service" AND error` ,
1372+ },
1373+ },
1374+ }
1375+ summaries := extractQuerySummaries (data )
1376+ require .Len (t , summaries , 1 )
1377+ require .Equal (t , `app:"random-service" AND error` , summaries [0 ].Expression )
1378+ })
1379+
1380+ t .Run ("returns nil for empty data" , func (t * testing.T ) {
1381+ summaries := extractQuerySummaries (nil )
1382+ require .Nil (t , summaries )
1383+ })
1384+
1385+ t .Run ("handles mixed datasource types" , func (t * testing.T ) {
1386+ data := []* models.AlertQuery {
1387+ {
1388+ RefID : "A" ,
1389+ DatasourceUID : "elasticsearch-uid" ,
1390+ Model : map [string ]any {
1391+ "query" : `app:"random-service" AND log.level:"ERROR"` ,
1392+ },
1393+ },
1394+ {
1395+ RefID : "B" ,
1396+ DatasourceUID : "__expr__" ,
1397+ Model : map [string ]any {
1398+ "expression" : "A" ,
1399+ },
1400+ },
1401+ {
1402+ RefID : "C" ,
1403+ DatasourceUID : "__expr__" ,
1404+ Model : map [string ]any {
1405+ "expression" : "B" ,
1406+ },
1407+ },
1408+ }
1409+ summaries := extractQuerySummaries (data )
1410+ require .Len (t , summaries , 3 )
1411+ require .Equal (t , `app:"random-service" AND log.level:"ERROR"` , summaries [0 ].Expression )
1412+ require .Equal (t , "A" , summaries [1 ].Expression )
1413+ require .Equal (t , "B" , summaries [2 ].Expression )
1414+ })
1415+ }
0 commit comments