-
Notifications
You must be signed in to change notification settings - Fork 0
/
user_message_test.go
85 lines (76 loc) · 1.83 KB
/
user_message_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package serr
import (
"errors"
"testing"
)
func TestUserMsg(t *testing.T) {
const strErr1 = "This is a test err"
const thisIsMyMessage = "This is my message"
er := Wrap(errors.New(strErr1), thisIsMyMessage)
se, ok := er.(SErr)
if !ok {
t.Error("er should be a SErr")
t.FailNow()
}
sl := se.Fields()
if len(sl) != 6 {
t.Error("Structured error from an error wrapped with a single field should contain 6 fields, got", len(sl))
}
const umsg = "Your app needs to be updated"
se.SetUserMsg(umsg, Severity.Warn)
if msg, sev := UserMsg(se); msg != umsg || sev != Severity.Warn {
t.Errorf(`User message or severity is not as expected.
Expected message %s, Got %s; Expected Severity %s, Got %s`, umsg, msg, Severity.Warn, sev)
}
}
func TestUserMsgFromErr(t *testing.T) {
tests := []struct {
name string
errMsg string
usrMsg string
altMsg string
expected string
}{
{
name: "Empty error",
expected: "",
},
{
name: "Error is blank, usrMsg provided",
usrMsg: "User message",
expected: "User message",
},
{
name: "Only errMsg provided",
errMsg: "Error message",
usrMsg: "",
expected: "",
},
{
name: "Error is SErr, no alt provided",
usrMsg: "Some user message",
expected: "Some user message",
},
{
name: "User msg is blank, alt provided",
usrMsg: "",
altMsg: "Alt message",
expected: "Alt message",
},
}
for _, test := range tests {
var testErr error
// We must have an error to work with
err := errors.New(test.errMsg)
// Make it an SErr
ser := WrapAsSErr(err)
ser.SetUserMsg(test.usrMsg, Severity.Info)
testErr = ser
t.Run(test.name, func(t *testing.T) {
result := UserMsgFromErr(testErr, test.altMsg)
if result != test.expected {
t.Errorf("Expected '%s', got '%s'", test.expected, result)
}
})
}
}