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()) +}