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  }