1package models
2
3import (
4	"testing"
5
6	"github.com/grafana/grafana/pkg/components/simplejson"
7	"github.com/stretchr/testify/assert"
8	"github.com/stretchr/testify/require"
9)
10
11func TestAlert_ContainsUpdates(t *testing.T) {
12	settings, err := simplejson.NewJson([]byte(`{ "field": "value" }`))
13	require.NoError(t, err)
14
15	alert1 := &Alert{
16		Settings: settings,
17		Name:     "Name",
18		Message:  "Message",
19	}
20
21	alert2 := &Alert{
22		Settings: settings,
23		Name:     "Name",
24		Message:  "Message",
25	}
26
27	assert.False(t, alert1.ContainsUpdates(alert2))
28
29	settingsUpdated, err := simplejson.NewJson([]byte(`{ "field": "newValue" }`))
30	require.NoError(t, err)
31
32	alert2.Settings = settingsUpdated
33
34	assert.True(t, alert1.ContainsUpdates(alert2))
35}
36
37func TestAlert_GetTagsFromSettings(t *testing.T) {
38	settings, err := simplejson.NewJson([]byte(`{
39		"field": "value",
40		"alertRuleTags": {
41			"foo": "bar",
42			"waldo": "fred",
43			"tagMap": { "mapValue": "value" }
44		}
45	}`))
46	require.NoError(t, err)
47
48	alert := &Alert{
49		Settings: settings,
50		Name:     "Name",
51		Message:  "Message",
52	}
53
54	expectedTags := []*Tag{
55		{Id: 0, Key: "foo", Value: "bar"},
56		{Id: 0, Key: "waldo", Value: "fred"},
57		{Id: 0, Key: "tagMap", Value: ""},
58	}
59	actualTags := alert.GetTagsFromSettings()
60
61	assert.ElementsMatch(t, actualTags, expectedTags)
62}
63