mirror of
https://github.com/grafana/grafana.git
synced 2024-11-29 04:04:00 -06:00
Alerting: Marshal incoming json.RawMessage in diff (#84692)
This will ensure the encoding is correct when comparing to the existing rule.
This commit is contained in:
parent
8336f1fc1e
commit
6d16cf2699
@ -346,7 +346,11 @@ func (alertRule *AlertRule) Diff(rule *AlertRule, ignore ...string) cmputil.Diff
|
||||
|
||||
// json.RawMessage is a slice of bytes and therefore cmp's default behavior is to compare it by byte, which is not really useful
|
||||
var jsonCmp = cmp.Transformer("", func(in json.RawMessage) string {
|
||||
return string(in)
|
||||
b, err := json.Marshal(in)
|
||||
if err != nil {
|
||||
return string(in)
|
||||
}
|
||||
return string(b)
|
||||
})
|
||||
ops = append(
|
||||
ops,
|
||||
|
@ -656,6 +656,21 @@ func TestDiff(t *testing.T) {
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("should correctly detect no change with '<' and '>' in query", func(t *testing.T) {
|
||||
old := query1
|
||||
new := query1
|
||||
old.Model = json.RawMessage(`{"field1": "$A \u003c 1"}`)
|
||||
new.Model = json.RawMessage(`{"field1": "$A < 1"}`)
|
||||
rule1.Data = []AlertQuery{old}
|
||||
rule2.Data = []AlertQuery{new}
|
||||
|
||||
diff := rule1.Diff(rule2)
|
||||
assert.Nil(t, diff)
|
||||
|
||||
// reset rule1
|
||||
rule1.Data = []AlertQuery{query1}
|
||||
})
|
||||
|
||||
t.Run("should detect new changes in array if too many fields changed", func(t *testing.T) {
|
||||
query2 := query1
|
||||
query2.QueryType = "test"
|
||||
|
Loading…
Reference in New Issue
Block a user