Chore: Use interfaces where possible (#26392)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
@@ -3,7 +3,6 @@ package alerting
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
)
|
||||
|
||||
@@ -75,7 +74,7 @@ func (ae *AlertEngine) mapRulesToUsageStats(rules []*models.Alert) (DatasourceAl
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (ae *AlertEngine) parseAlertRuleModel(settings *simplejson.Json) ([]int64, error) {
|
||||
func (ae *AlertEngine) parseAlertRuleModel(settings json.Marshaler) ([]int64, error) {
|
||||
datasourceIDs := []int64{}
|
||||
model := alertJSONModel{}
|
||||
|
||||
@@ -85,7 +84,7 @@ func (ae *AlertEngine) parseAlertRuleModel(settings *simplejson.Json) ([]int64,
|
||||
|
||||
bytes, err := settings.MarshalJSON()
|
||||
if err != nil {
|
||||
return datasourceIDs, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(bytes, &model)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package alerting
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
|
||||
@@ -95,8 +96,7 @@ func TestParsingAlertRuleSettings(t *testing.T) {
|
||||
shouldErr: require.NoError,
|
||||
},
|
||||
{
|
||||
name: "can parse blank content",
|
||||
file: "testdata/settings/invalid_format.json",
|
||||
name: "can handle nil content",
|
||||
expected: []int64{},
|
||||
shouldErr: require.NoError,
|
||||
},
|
||||
@@ -108,12 +108,16 @@ func TestParsingAlertRuleSettings(t *testing.T) {
|
||||
|
||||
for _, tc := range tcs {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
content, err := ioutil.ReadFile(tc.file)
|
||||
require.NoError(t, err, "expected to be able to read file")
|
||||
var settings json.Marshaler
|
||||
if tc.file != "" {
|
||||
content, err := ioutil.ReadFile(tc.file)
|
||||
require.NoError(t, err, "expected to be able to read file")
|
||||
|
||||
j, _ := simplejson.NewJson(content)
|
||||
settings, err = simplejson.NewJson(content)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
result, err := ae.parseAlertRuleModel(j)
|
||||
result, err := ae.parseAlertRuleModel(settings)
|
||||
|
||||
tc.shouldErr(t, err)
|
||||
diff := cmp.Diff(tc.expected, result)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package alerting
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
@@ -64,7 +65,7 @@ func findPanelQueryByRefID(panel *simplejson.Json, refID string) *simplejson.Jso
|
||||
return nil
|
||||
}
|
||||
|
||||
func copyJSON(in *simplejson.Json) (*simplejson.Json, error) {
|
||||
func copyJSON(in json.Marshaler) (*simplejson.Json, error) {
|
||||
rawJSON, err := in.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
Reference in New Issue
Block a user