package ualert import ( "testing" "github.com/grafana/grafana/pkg/components/simplejson" "github.com/stretchr/testify/require" ) func TestMigrateAlertRuleQueries(t *testing.T) { tc := []struct { name string input *simplejson.Json expected string err error }{ { name: "when a query has a sub query - it is extracted", input: simplejson.NewFromAny(map[string]interface{}{"targetFull": "thisisafullquery", "target": "ahalfquery"}), expected: `{"target":"thisisafullquery"}`, }, { name: "when a query does not have a sub query - it no-ops", input: simplejson.NewFromAny(map[string]interface{}{"target": "ahalfquery"}), expected: `{"target":"ahalfquery"}`, }, } for _, tt := range tc { t.Run(tt.name, func(t *testing.T) { model, err := tt.input.Encode() require.NoError(t, err) queries, err := migrateAlertRuleQueries([]alertQuery{{Model: model}}) if tt.err != nil { require.Error(t, err) require.EqualError(t, err, tt.err.Error()) return } require.NoError(t, err) r, err := queries[0].Model.MarshalJSON() require.NoError(t, err) require.JSONEq(t, tt.expected, string(r)) }) } }