alert_rule_changes_test.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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.Alert{
  17. {
  18. PanelId: 1,
  19. DashboardId: testDash.Id,
  20. Name: "Alerting title",
  21. Description: "Alerting description",
  22. OrgId: FakeOrgId,
  23. },
  24. }
  25. cmd := m.SaveAlertsCommand{
  26. Alerts: items,
  27. DashboardId: testDash.Id,
  28. OrgId: FakeOrgId,
  29. UserId: 2,
  30. }
  31. SaveAlerts(&cmd)
  32. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId}
  33. er := GetAlertRuleChanges(query)
  34. So(er, ShouldBeNil)
  35. So(len(query.Result), ShouldEqual, 1)
  36. err = DeleteDashboard(&m.DeleteDashboardCommand{
  37. OrgId: FakeOrgId,
  38. Slug: testDash.Slug,
  39. })
  40. So(err, ShouldBeNil)
  41. Convey("Alerts should be removed", func() {
  42. query := m.GetAlertsQuery{DashboardId: testDash.Id, OrgId: 1}
  43. err2 := HandleAlertsQuery(&query)
  44. So(testDash.Id, ShouldEqual, 1)
  45. So(err2, ShouldBeNil)
  46. So(len(query.Result), ShouldEqual, 0)
  47. })
  48. Convey("should add one more alert_rule_change", func() {
  49. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId}
  50. er := GetAlertRuleChanges(query)
  51. So(er, ShouldBeNil)
  52. So(len(query.Result), ShouldEqual, 2)
  53. })
  54. Convey("add 4 updates", func() {
  55. sess := x.NewSession()
  56. SaveAlertChange("UPDATED", items[0], sess)
  57. SaveAlertChange("UPDATED", items[0], sess)
  58. SaveAlertChange("UPDATED", items[0], sess)
  59. SaveAlertChange("UPDATED", items[0], sess)
  60. sess.Commit()
  61. Convey("query for max one change", func() {
  62. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId, Limit: 1}
  63. er := GetAlertRuleChanges(query)
  64. So(er, ShouldBeNil)
  65. So(len(query.Result), ShouldEqual, 1)
  66. })
  67. Convey("query for all since id 5", func() {
  68. query := &m.GetAlertChangesQuery{OrgId: FakeOrgId, SinceId: 5}
  69. er := GetAlertRuleChanges(query)
  70. So(er, ShouldBeNil)
  71. So(len(query.Result), ShouldEqual, 2)
  72. })
  73. })
  74. })
  75. })
  76. }