From e3f3b16b84c122746dd2918541ede5d250003db4 Mon Sep 17 00:00:00 2001 From: Aneurin Barker Snook Date: Sun, 19 Nov 2023 20:27:33 +0000 Subject: [PATCH] add validation error type, fix tests, add number tests --- error.go | 12 ++++-------- error_test.go | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/error.go b/error.go index 2a7d5a5..beb9e67 100644 --- a/error.go +++ b/error.go @@ -36,7 +36,7 @@ type Error struct { Data map[string]interface{} `json:"data,omitempty"` // Optional additional data. } -// Error retrieves the message of a REST API Error. +// Error retrieves the message of a REST API error. // If it has a "error" string attached using WithData or WithError, that message is returned. // Otherwise, the Error's own message is returned. func (e Error) Error() string { @@ -54,14 +54,10 @@ func (e Error) Error() string { // If the target is a REST API error and specifies a status code, this function returns true if the status codes match. // If the target is an empty REST API error, this function always returns true. func (e Error) Is(target error) bool { - t, ok := target.(Error) - if !ok { - return false + if t, ok := target.(Error); ok { + return t.StatusCode == e.StatusCode || t.StatusCode == 0 } - if t.StatusCode == 0 { - return true - } - return t.StatusCode == e.StatusCode + return false } // WithData returns a copy of the HTTP error with the given data merged in. diff --git a/error_test.go b/error_test.go index f2d70cf..da07274 100644 --- a/error_test.go +++ b/error_test.go @@ -132,7 +132,7 @@ func TestErrorWrite(t *testing.T) { rec := httptest.NewRecorder() _, err := tc.Input.Write(rec) - if err != tc.Err { + if !errors.Is(err, tc.Err) { t.Errorf("Expected error %v, got %v", tc.Err, err) } if err != nil { @@ -163,7 +163,7 @@ func TestErrorWriteJSON(t *testing.T) { rec := httptest.NewRecorder() err := tc.Input.WriteJSON(rec) - if err != tc.Err { + if !errors.Is(err, tc.Err) { t.Errorf("Expected error %v, got %v", tc.Err, err) } if err != nil {