|
@@ -11,56 +11,64 @@ import (
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-func TestBaseNotifier(t *testing.T) {
|
|
|
|
|
- Convey("Base notifier tests", t, func() {
|
|
|
|
|
- Convey("default constructor for notifiers", func() {
|
|
|
|
|
- bJson := simplejson.New()
|
|
|
|
|
-
|
|
|
|
|
- model := &m.AlertNotification{
|
|
|
|
|
- Id: 1,
|
|
|
|
|
- Name: "name",
|
|
|
|
|
- Type: "email",
|
|
|
|
|
- Settings: bJson,
|
|
|
|
|
- }
|
|
|
|
|
|
|
+func TestShouldSendAlertNotification(t *testing.T) {
|
|
|
|
|
+ tcs := []struct {
|
|
|
|
|
+ prevState m.AlertStateType
|
|
|
|
|
+ newState m.AlertStateType
|
|
|
|
|
+ expected bool
|
|
|
|
|
+ }{
|
|
|
|
|
+ {
|
|
|
|
|
+ newState: m.AlertStatePending,
|
|
|
|
|
+ prevState: m.AlertStateOK,
|
|
|
|
|
+ expected: false,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ newState: m.AlertStateOK,
|
|
|
|
|
+ prevState: m.AlertStateAlerting,
|
|
|
|
|
+ expected: true,
|
|
|
|
|
+ },
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- Convey("can parse false value", func() {
|
|
|
|
|
- bJson.Set("uploadImage", false)
|
|
|
|
|
|
|
+ for _, tc := range tcs {
|
|
|
|
|
+ context := alerting.NewEvalContext(context.TODO(), &alerting.Rule{
|
|
|
|
|
+ State: tc.newState,
|
|
|
|
|
+ })
|
|
|
|
|
+ context.Rule.State = tc.prevState
|
|
|
|
|
+ timeNow := time.Now()
|
|
|
|
|
+ if defaultShouldNotify(context, true, 0, &timeNow) != tc.expected {
|
|
|
|
|
+ t.Errorf("expected %v to return %v", tc, tc.expected)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- base := NewNotifierBase(model)
|
|
|
|
|
- So(base.UploadImage, ShouldBeFalse)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+func TestBaseNotifier(t *testing.T) {
|
|
|
|
|
+ Convey("default constructor for notifiers", t, func() {
|
|
|
|
|
+ bJson := simplejson.New()
|
|
|
|
|
|
|
|
- Convey("can parse true value", func() {
|
|
|
|
|
- bJson.Set("uploadImage", true)
|
|
|
|
|
|
|
+ model := &m.AlertNotification{
|
|
|
|
|
+ Id: 1,
|
|
|
|
|
+ Name: "name",
|
|
|
|
|
+ Type: "email",
|
|
|
|
|
+ Settings: bJson,
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- base := NewNotifierBase(model)
|
|
|
|
|
- So(base.UploadImage, ShouldBeTrue)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ Convey("can parse false value", func() {
|
|
|
|
|
+ bJson.Set("uploadImage", false)
|
|
|
|
|
|
|
|
- Convey("default value should be true for backwards compatibility", func() {
|
|
|
|
|
- base := NewNotifierBase(model)
|
|
|
|
|
- So(base.UploadImage, ShouldBeTrue)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ base := NewNotifierBase(model)
|
|
|
|
|
+ So(base.UploadImage, ShouldBeFalse)
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
- Convey("should notify", func() {
|
|
|
|
|
- Convey("pending -> ok", func() {
|
|
|
|
|
- context := alerting.NewEvalContext(context.TODO(), &alerting.Rule{
|
|
|
|
|
- State: m.AlertStatePending,
|
|
|
|
|
- })
|
|
|
|
|
- context.Rule.State = m.AlertStateOK
|
|
|
|
|
- timeNow := time.Now()
|
|
|
|
|
- So(defaultShouldNotify(context, true, 0, &timeNow), ShouldBeFalse)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ Convey("can parse true value", func() {
|
|
|
|
|
+ bJson.Set("uploadImage", true)
|
|
|
|
|
+
|
|
|
|
|
+ base := NewNotifierBase(model)
|
|
|
|
|
+ So(base.UploadImage, ShouldBeTrue)
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
- Convey("ok -> alerting", func() {
|
|
|
|
|
- context := alerting.NewEvalContext(context.TODO(), &alerting.Rule{
|
|
|
|
|
- State: m.AlertStateOK,
|
|
|
|
|
- })
|
|
|
|
|
- context.Rule.State = m.AlertStateAlerting
|
|
|
|
|
- timeNow := time.Now()
|
|
|
|
|
- So(defaultShouldNotify(context, true, 0, &timeNow), ShouldBeTrue)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ Convey("default value should be true for backwards compatibility", func() {
|
|
|
|
|
+ base := NewNotifierBase(model)
|
|
|
|
|
+ So(base.UploadImage, ShouldBeTrue)
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|