@ -11,56 +11,64 @@ import (
. "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 )
} )
} )
}