grafana/pkg/services/ngalert/store/compat_test.go
Yuri Tseretyan f8fa5286a1
Alerting: Introduce alert rule models in storage (#93187)
* introduce storage model for alert rule tables
* remove AlertRuleVersion from models because it's not used anywhere other than in storage
* update historian xorm store to use alerting store to fetch rules

* fix folder tests

---------

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2024-09-12 13:20:33 -04:00

46 lines
1.4 KiB
Go

package store
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/infra/log/logtest"
ngmodels "github.com/grafana/grafana/pkg/services/ngalert/models"
"github.com/grafana/grafana/pkg/util"
)
func TestAlertRuleToModelsAlertRule(t *testing.T) {
g := ngmodels.RuleGen
t.Run("make sure no data is lost between conversions", func(t *testing.T) {
for _, rule := range g.GenerateMany(100) {
r, err := alertRuleFromModelsAlertRule(rule)
require.NoError(t, err)
clone, err := alertRuleToModelsAlertRule(r, &logtest.Fake{})
require.NoError(t, err)
require.Empty(t, rule.Diff(&clone))
}
})
t.Run("should use NoData if NoDataState is not known", func(t *testing.T) {
rule, err := alertRuleFromModelsAlertRule(g.Generate())
require.NoError(t, err)
rule.NoDataState = util.GenerateShortUID()
converted, err := alertRuleToModelsAlertRule(rule, &logtest.Fake{})
require.NoError(t, err)
require.Equal(t, ngmodels.NoData, converted.NoDataState)
})
t.Run("should use Error if ExecErrState is not known", func(t *testing.T) {
rule, err := alertRuleFromModelsAlertRule(g.Generate())
require.NoError(t, err)
rule.ExecErrState = util.GenerateShortUID()
converted, err := alertRuleToModelsAlertRule(rule, &logtest.Fake{})
require.NoError(t, err)
require.Equal(t, ngmodels.ErrorErrState, converted.ExecErrState)
})
}