From 4ad19029d2cfc49a2194acab4fd30dd232ead8bf Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Wed, 17 Jan 2024 15:52:08 -0600 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20a=20few=20common=20responses?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- new.go | 28 ++++++++++++++++++++++++++ new_test.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 new.go create mode 100644 new_test.go diff --git a/new.go b/new.go new file mode 100644 index 0000000..73e1cf6 --- /dev/null +++ b/new.go @@ -0,0 +1,28 @@ +package errors + +import "net/http" + +// Represents a 404 error. +func NewNotFound(format string, parts ...any) SettableError { + if format == "" { + format = "Not Found" + } + + return Errorf(http.StatusNotFound, format, parts...) +} + +// Represents a 400 error. +func NewBadRequest(format string, parts ...any) SettableError { + if format == "" { + format = "Bad Request" + } + + return Errorf(http.StatusBadRequest, format, parts...) +} + +// Represents a 500 error. For this error, the user error is preset to "Unknown Error". +func NewInternalError(format string, parts ...any) SettableError { + status := http.StatusInternalServerError + msg := "Unknown Error" + return Errorf(status, format, parts...).Msg(msg) +} diff --git a/new_test.go b/new_test.go new file mode 100644 index 0000000..fc74651 --- /dev/null +++ b/new_test.go @@ -0,0 +1,57 @@ +package errors + +import ( + "net/http" + "testing" + + "github.com/stretchr/testify/suite" +) + +func TestNew(t *testing.T) { + suite.Run(t, new(NewTestSuite)) +} + +type NewTestSuite struct { + suite.Suite +} + +func (s *NewTestSuite) TestNotFound() { + msg := "I can't see you" + var err ResponsableError = NewNotFound(msg) + s.Assert().NotNil(err) + s.Assert().Equal(http.StatusNotFound, err.GetStatus()) + s.Assert().Equal(msg, err.GetMsg()) + s.Assert().Equal(msg, err.Error()) +} + +func (s *NewTestSuite) TestNotFoundDefaultMsg() { + msg := "Not Found" + var err ResponsableError = NewNotFound("") + s.Assert().NotNil(err) + s.Assert().Equal(msg, err.GetMsg()) + s.Assert().Equal(msg, err.Error()) +} + +func (s *NewTestSuite) TestBadRequest() { + msg := "I can't see you" + var err ResponsableError = NewBadRequest(msg) + s.Assert().NotNil(err) + s.Assert().Equal(http.StatusBadRequest, err.GetStatus()) + s.Assert().Equal(msg, err.GetMsg()) + s.Assert().Equal(msg, err.Error()) +} + +func (s *NewTestSuite) TestBadRequestDefaultMsg() { + msg := "Bad Request" + var err ResponsableError = NewBadRequest("") + s.Assert().NotNil(err) + s.Assert().Equal(msg, err.GetMsg()) + s.Assert().Equal(msg, err.Error()) +} + +func (s *NewTestSuite) TestInternal() { + var err ResponsableError = NewInternalError("%d > %d", 42, 13) + s.Assert().NotNil(err) + s.Assert().Equal("42 > 13", err.Error()) + s.Assert().Equal("Unknown Error", err.GetMsg()) +}