1616package alerts
1717
1818import (
19- "fmt"
2019 "html/template"
21- "strings"
2220 "testing"
2321
2422 "github.com/prometheus/alertmanager/notify/webhook"
@@ -39,7 +37,7 @@ func Test_formatIssueBody(t *testing.T) {
3937 }
4038}
4139
42- func TestFormatTitleSimple (t * testing.T ) {
40+ func TestReceiverHandler_formatTitle (t * testing.T ) {
4341 msg := webhook.Message {
4442 Data : & amtmpl.Data {
4543 Status : "firing" ,
@@ -54,41 +52,46 @@ func TestFormatTitleSimple(t *testing.T) {
5452 },
5553 }
5654 tests := []struct {
57- tmplTxt string
58- expectErrTxt string
59- expectOutput string
55+ name string
56+ template string
57+ want string
58+ wantErr bool
6059 }{
61- {"foo" , "" , "foo" },
62- {"{{ .Data.Status }}" , "" , "firing" },
63- {"{{ .Status }}" , "" , "firing" },
64- {"{{ range .Alerts }}{{ .Annotations.env }} {{ end }}" , "" , "prod stage " },
65- {"{{ .Foo }}" , "can't evaluate field Foo" , "" },
60+ {
61+ name : "success-simple" ,
62+ template : "foo" ,
63+ want : "foo" ,
64+ },
65+ {
66+ name : "success-template-simple" ,
67+ template : "{{ .Data.Status }}" ,
68+ want : "firing" ,
69+ },
70+ {
71+ name : "success-template-complex" ,
72+ template : "{{ range .Alerts }}{{ .Annotations.env }} {{ end }}" ,
73+ want : "prod stage " ,
74+ },
75+ {
76+ name : "error-bad-template" ,
77+ template : "{{ .Foo }}" ,
78+ wantErr : true ,
79+ },
6680 }
67-
68- for testNum , tc := range tests {
69- testName := fmt .Sprintf ("tc=%d" , testNum )
70- t .Run (testName , func (t * testing.T ) {
71- rh , err := NewReceiver (& fakeClient {}, "default" , false , "" , nil , tc .tmplTxt )
81+ for _ , tt := range tests {
82+ t .Run (tt .name , func (t * testing.T ) {
83+ rh , err := NewReceiver (& fakeClient {}, "default" , false , "" , nil , tt .template )
7284 if err != nil {
7385 t .Fatal (err )
7486 }
7587
76- title , err := rh .formatTitle (& msg )
77- if tc .expectErrTxt == "" && err != nil {
78- t .Error (err )
79- }
80- if tc .expectErrTxt != "" {
81- if err == nil {
82- t .Error ()
83- } else if ! strings .Contains (err .Error (), tc .expectErrTxt ) {
84- t .Error (err .Error ())
85- }
86- }
87- if tc .expectOutput == "" && title != "" {
88- t .Error (title )
88+ got , err := rh .formatTitle (& msg )
89+ if (err != nil ) != tt .wantErr {
90+ t .Errorf ("ReceiverHandler.formatTitle() error = %v, wantErr %v" , err , tt .wantErr )
91+ return
8992 }
90- if ! strings . Contains ( title , tc . expectOutput ) {
91- t .Error ( title )
93+ if got != tt . want {
94+ t .Errorf ( "ReceiverHandler.formatTitle() = %v, want %v" , got , tt . want )
9295 }
9396 })
9497 }
0 commit comments