alert_rule_changes_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package sqlstore
  2. import (
  3. "testing"
  4. m "github.com/grafana/grafana/pkg/models"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. var (
  8. FakeOrgId int64 = 2
  9. )
  10. func TestAlertRuleChangesDataAccess(t *testing.T) {
  11. Convey("Testing Alert rule changes data access", t, func() {
  12. InitTestDB(t)
  13. testDash := insertTestDashboard("dashboard with alerts", 2, "alert")
  14. var err error
  15. Convey("When dashboard is removed", func() {
  16. items := []m.AlertRule{
  17. {
  18. PanelId: 1,
  19. DashboardId: testDash.Id,
  20. Query: "Query",
  21. QueryRefId: "A",
  22. WarnLevel: 30,
  23. CritLevel: 50,
  24. WarnOperator: ">",
  25. CritOperator: ">",
  26. Interval: "10",
  27. Title: "Alerting title",
  28. Description: "Alerting description",
  29. QueryRange: 3600,
  30. Aggregator: "avg",
  31. OrgId: FakeOrgId,
  32. },
  33. }
  34. cmd := m.SaveAlertsCommand{
  35. Alerts: items,
  36. DashboardId: testDash.Id,
  37. OrgId: FakeOrgId,
  38. UserId: 2,
  39. }
  40. SaveAlerts(&cmd)
  41. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId}
  42. er := GetAlertRuleChanges(query)
  43. So(er, ShouldBeNil)
  44. So(len(query.Result), ShouldEqual, 1)
  45. err = DeleteDashboard(&m.DeleteDashboardCommand{
  46. OrgId: FakeOrgId,
  47. Slug: testDash.Slug,
  48. })
  49. So(err, ShouldBeNil)
  50. Convey("Alerts should be removed", func() {
  51. query := m.GetAlertsQuery{DashboardId: testDash.Id, OrgId: 1}
  52. err2 := HandleAlertsQuery(&query)
  53. So(testDash.Id, ShouldEqual, 1)
  54. So(err2, ShouldBeNil)
  55. So(len(query.Result), ShouldEqual, 0)
  56. })
  57. Convey("should add one more alert_rule_change", func() {
  58. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId}
  59. er := GetAlertRuleChanges(query)
  60. So(er, ShouldBeNil)
  61. So(len(query.Result), ShouldEqual, 2)
  62. })
  63. Convey("add 4 updates", func() {
  64. sess := x.NewSession()
  65. SaveAlertChange("UPDATED", items[0], sess)
  66. SaveAlertChange("UPDATED", items[0], sess)
  67. SaveAlertChange("UPDATED", items[0], sess)
  68. SaveAlertChange("UPDATED", items[0], sess)
  69. sess.Commit()
  70. Convey("query for max one change", func() {
  71. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId, Limit: 1}
  72. er := GetAlertRuleChanges(query)
  73. So(er, ShouldBeNil)
  74. So(len(query.Result), ShouldEqual, 1)
  75. })
  76. Convey("query for all since id 5", func() {
  77. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId, SinceId: 5}
  78. er := GetAlertRuleChanges(query)
  79. So(er, ShouldBeNil)
  80. So(len(query.Result), ShouldEqual, 2)
  81. })
  82. })
  83. })
  84. })
  85. }