github.com/alloyzeus/go-azfl@v0.0.0-20231220071816-9740126a2d07/errors/entity_test.go (about) 1 package errors 2 3 import "testing" 4 5 func TestEntityBlank(t *testing.T) { 6 var err error = Ent("", nil) 7 if err.Error() != "entity error" { 8 t.Errorf(`err.Error() != "entity error" -- %q`, err.Error()) 9 } 10 if entErr, ok := err.(EntityError); !ok { 11 t.Error("err.(EntityError)") 12 } else { 13 if entErr.EntityIdentifier() != "" { 14 t.Error(`entErr.EntityIdentifier() != ""`) 15 } 16 } 17 if inner := Unwrap(err); inner != nil { 18 t.Error("inner != nil") 19 } 20 } 21 22 func TestEntityNoID(t *testing.T) { 23 var err error = Ent("", ErrValueMalformed) 24 if err.Error() != "entity malformed" { 25 t.Errorf(`err.Error() != "entity malformed" -- %q`, err.Error()) 26 } 27 if entErr, ok := err.(EntityError); !ok { 28 t.Error("err.(EntityError)") 29 } else { 30 if entErr.EntityIdentifier() != "" { 31 t.Error(`entErr.EntityIdentifier() != ""`) 32 } 33 } 34 } 35 36 func TestEntityWithFields(t *testing.T) { 37 var err error = EntFields( 38 "user", 39 Ent("name", ErrValueEmpty), 40 Ent("age", ErrValueUnspecified)) 41 if err.Error() != "user: name: empty, age: unspecified" { 42 t.Errorf(`err.Error() != "user: name: empty, age: unspecified" -- %q`, err.Error()) 43 } 44 } 45 46 func TestEntityWithFieldsNoName(t *testing.T) { 47 var err error = EntFields( 48 "", 49 Ent("name", ErrValueEmpty), 50 Ent("age", ErrValueUnspecified)) 51 if err.Error() != "entity: name: empty, age: unspecified" { 52 t.Errorf(`err.Error() != "entity: name: empty, age: unspecified" -- %q`, err.Error()) 53 } 54 } 55 56 func TestEntNotFound(t *testing.T) { 57 var fooNotFound error = EntNotFound("foo", nil) 58 if !IsEntNotFoundError(fooNotFound) { 59 t.Errorf("!IsEntNotFound(fooNotFound)") 60 } 61 if fooNotFound.Error() != "foo: not found" { 62 t.Errorf(`fooNotFound.Error() != "foo: not found" -- %q`, fooNotFound.Error()) 63 } 64 var notFoundBare error = ErrEntityNotFound 65 if IsEntNotFoundError(notFoundBare) { 66 t.Errorf("IsEntNotFound(notFoundBare)") 67 } 68 if IsArgumentError(fooNotFound) { 69 t.Errorf("IsArgumentError(fooNotFound)") 70 } 71 if IsCallError(fooNotFound) { 72 t.Errorf("IsCallError(fooNotFound)") 73 } 74 } 75 76 func TestIsEntNotFoundErrorCustomNegative(t *testing.T) { 77 var err error = &customEntError{entID: "foo"} 78 if IsEntNotFoundError(err) { 79 t.Error(`IsEntNotFoundError(err)`) 80 } 81 } 82 83 func TestEntInvalid(t *testing.T) { 84 var fooInvalid error = EntInvalid("foo", nil) 85 if !IsEntInvalidError(fooInvalid) { 86 t.Errorf("!IsEntInvalid(fooInvalid)") 87 } 88 if fooInvalid.Error() != "foo: invalid" { 89 t.Errorf(`fooInvalid.Error() != "foo: invalid" -- %q`, fooInvalid.Error()) 90 } 91 var notFoundBare error = ErrValueInvalid 92 if IsEntInvalidError(notFoundBare) { 93 t.Errorf("IsEntInvalid(notFoundBare)") 94 } 95 if IsArgumentError(fooInvalid) { 96 t.Errorf("IsArgumentError(fooInvalid)") 97 } 98 if IsCallError(fooInvalid) { 99 t.Errorf("IsCallError(fooInvalid)") 100 } 101 } 102 103 func TestIsEntInvalidErrorCustomNegative(t *testing.T) { 104 var err error = &customEntError{entID: "foo"} 105 if IsEntInvalidError(err) { 106 t.Error(`IsEntInvalidError(err)`) 107 } 108 } 109 110 type customEntError struct { 111 entID string 112 } 113 114 var ( 115 _ EntityError = &customEntError{} 116 ) 117 118 func (e *customEntError) EntityIdentifier() string { return e.entID } 119 func (e *customEntError) Error() string { return "custom ent error" } 120 func (e *customEntError) CallError() CallError { return e } 121 func (e *customEntError) Unwrap() error { return nil } 122 123 func TestUnwrapEntityErrorSetNil(t *testing.T) { 124 var err error 125 if callErrors := UnwrapEntityErrorSet(err); len(callErrors) != 0 { 126 t.Error("len(callErrors) != 0") 127 } 128 } 129 130 func TestUnwrapEntityErrorSetWrongType(t *testing.T) { 131 var err error = ErrValueMalformed 132 if callErrors := UnwrapEntityErrorSet(err); len(callErrors) != 0 { 133 t.Error("len(callErrors) != 0") 134 } 135 } 136 137 func TestEntSetEmpty(t *testing.T) { 138 var err error = entErrorSet{} 139 if err.Error() != "" { 140 t.Errorf(`err.Error() != "" -- %q`, err.Error()) 141 } 142 errSet := asErrorSet(err) 143 if errSet == nil { 144 t.Error("errSet == nil") 145 } 146 errs := errSet.Errors() 147 if len(errs) != 0 { 148 t.Error("len(errors) != 0") 149 } 150 errs = UnwrapErrorSet(err) 151 if len(errs) != 0 { 152 t.Error("len(errors) != 0") 153 } 154 entErrSet := asEntityErrorSet(err) 155 if entErrSet == nil { 156 t.Error("entErrSet == nil") 157 } 158 entErrors := entErrSet.EntityErrors() 159 if len(entErrors) != 0 { 160 t.Error("len(entErrors) != 0") 161 } 162 entErrors = UnwrapEntityErrorSet(err) 163 if len(entErrors) != 0 { 164 t.Error("len(entErrors) != 0") 165 } 166 } 167 168 func TestEntSetSinge(t *testing.T) { 169 var err error = EntSet(Ent("foo", ErrValueMalformed)) 170 if err.Error() != "foo: malformed" { 171 t.Errorf(`err.Error() != "foo: malformed" -- %q`, err.Error()) 172 } 173 errSet := asErrorSet(err) 174 if errSet == nil { 175 t.Error("errSet == nil") 176 } 177 errs := errSet.Errors() 178 if len(errs) != 1 { 179 t.Error("len(errors) != 1") 180 } 181 errs = UnwrapErrorSet(err) 182 if len(errs) != 1 { 183 t.Error("len(errors) != 1") 184 } 185 entErrSet := asEntityErrorSet(err) 186 if entErrSet == nil { 187 t.Error("entErrSet == nil") 188 } 189 entErrors := entErrSet.EntityErrors() 190 if len(entErrors) != 1 { 191 t.Error("len(entErrors) != 1") 192 } 193 entErrors = UnwrapEntityErrorSet(err) 194 if len(entErrors) != 1 { 195 t.Error("len(entErrors) != 1") 196 } 197 }