forked from Rheisen/berr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patherror_test.go
124 lines (97 loc) · 2.87 KB
/
error_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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package berr_test
import (
"fmt"
"strings"
"testing"
"github.com/rheisen/berr"
)
func TestApplicationError(t *testing.T) {
const errorMessage = "unexpected problem unmarshalling struct"
err := berr.Application(errorMessage)
if err == nil {
t.Fatalf("unexpected nil berr.Error")
}
if err.Error() != err.String() {
t.Errorf("expected err.Error() '%s', to equal err.String() '%s'", err.Error(), err.String())
}
if !strings.Contains(err.Error(), errorMessage) {
t.Errorf("unexpected err.Error() value: %s", err.Error())
}
if !strings.Contains(err.Error(), fmt.Sprintf("[%s error]", berr.ApplicationErrorType.String())) {
t.Errorf("unexpected err.Error() value: %s", err.Error())
}
if len(err.Details()) > 0 {
t.Errorf("unexpected length of err.Details(): '%d'", len(err.Details()))
}
if val, found := err.Map()["error_type"]; !found {
t.Errorf("expected err.Map() to contain 'error_type' key")
} else if val != berr.ApplicationErrorType.String() {
t.Errorf("unexpected error_type value in err.Map(): '%s'", val)
}
if _, found := err.Map()["details"]; !found {
t.Errorf("expected err.Map() to contain 'details' key")
}
if _, found := err.Map()["message"]; !found {
t.Errorf("expected err.Map() to contain 'message' key")
}
}
func TestValueInvalidError(t *testing.T) {
}
func TestValueMissingError(t *testing.T) {
}
func TestNotFoundError(t *testing.T) {
}
func TestAuthorizationError(t *testing.T) {
}
func TestAuthenticationError(t *testing.T) {
}
func TestApplicationErrorNoDetails(t *testing.T) {
errorMessage := "message"
err := berr.Application(errorMessage)
if err.Type() != berr.ApplicationErrorType {
t.Errorf(
"unexpected application berr error_type: expected '%s', found '%s'",
berr.ApplicationErrorType.String(),
err.Type().String(),
)
}
if err.Message() != errorMessage {
t.Errorf(
"unexpected application berr error_message: expected '%s', found '%s'",
errorMessage,
err.Message(),
)
}
expectedError := fmt.Sprintf("[%s error] %s", berr.ApplicationErrorType.String(), errorMessage)
if err.Error() != expectedError {
t.Errorf(
"unexpected application berr error: expected '%s', found '%s'",
expectedError,
err.Error(),
)
}
if err.Details() != nil {
t.Errorf(
"unexpected application berr error_detail: expected nil, found '%v'",
err.Details(),
)
}
}
func TestApplicationErrorWithDetails(t *testing.T) {
errorMessage := "message"
errDetailA := berr.D("some", 2)
err := berr.Application(errorMessage, errDetailA)
if err.Message() != errorMessage {
t.Errorf(
"unexpected application berr error_message: expected '%s', found '%s'",
errorMessage,
err.Message(),
)
}
}
func TestApplicationErrorWithErrorDetail(t *testing.T) {
errorMessage := "problem creating client"
err := berr.Application(errorMessage, berr.E(fmt.Errorf("problem pinging host")))
t.Log(err.String())
t.Log(err)
}