From 1d9cbc8df216310887229274b0819890f339703f Mon Sep 17 00:00:00 2001 From: GautamBytes Date: Sun, 13 Jul 2025 18:36:30 +0000 Subject: [PATCH] added ut for types.go Signed-off-by: GautamBytes --- pkg/util/errors/types_test.go | 81 +++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 pkg/util/errors/types_test.go diff --git a/pkg/util/errors/types_test.go b/pkg/util/errors/types_test.go new file mode 100644 index 00000000..8432bfe7 --- /dev/null +++ b/pkg/util/errors/types_test.go @@ -0,0 +1,81 @@ +package errors + +import ( + "errors" + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRetryError(t *testing.T) { + t.Run("NewRetryError with nil error", func(t *testing.T) { + retryErr := NewRetryError(nil) + assert.NotNil(t, retryErr) + assert.Nil(t, retryErr.Err) + assert.Equal(t, "retry error", retryErr.Error()) + }) + + t.Run("NewRetryError with an underlying error", func(t *testing.T) { + innerErr := errors.New("something went wrong") + retryErr := NewRetryError(innerErr) + assert.NotNil(t, retryErr) + assert.Equal(t, innerErr, retryErr.Err) + assert.Equal(t, "[retry]: something went wrong", retryErr.Error()) + }) + + t.Run("IsRetryError checks", func(t *testing.T) { + directRetryErr := NewRetryError(errors.New("direct")) + wrappedRetryErr := fmt.Errorf("wrapped: %w", directRetryErr) + otherErr := errors.New("not a retry error") + + assert.True(t, IsRetryError(directRetryErr)) + assert.True(t, IsRetryError(wrappedRetryErr)) + assert.False(t, IsRetryError(otherErr)) + }) + + t.Run("AsRetryError checks", func(t *testing.T) { + directRetryErr := NewRetryError(errors.New("direct")) + wrappedRetryErr := fmt.Errorf("wrapped: %w", directRetryErr) + + var target *RetryError + assert.True(t, AsRetryError(wrappedRetryErr, &target)) + assert.Equal(t, directRetryErr, target) + }) +} + +func TestBadRequestError(t *testing.T) { + t.Run("NewBadRequestError with nil error", func(t *testing.T) { + badReqErr := NewBadRequestError(nil) + assert.NotNil(t, badReqErr) + assert.Nil(t, badReqErr.Err) + assert.Equal(t, "fatal error", badReqErr.Error()) + }) + + t.Run("NewBadRequestError with an underlying error", func(t *testing.T) { + innerErr := errors.New("invalid input") + badReqErr := NewBadRequestError(innerErr) + assert.NotNil(t, badReqErr) + assert.Equal(t, innerErr, badReqErr.Err) + assert.Equal(t, "invalid input", badReqErr.Error()) + }) + + t.Run("IsBadRequest checks", func(t *testing.T) { + directBadReqErr := NewBadRequestError(errors.New("direct")) + wrappedBadReqErr := fmt.Errorf("wrapped: %w", directBadReqErr) + otherErr := errors.New("not a bad request error") + + assert.True(t, IsBadRequest(directBadReqErr)) + assert.True(t, IsBadRequest(wrappedBadReqErr)) + assert.False(t, IsBadRequest(otherErr)) + }) + + t.Run("AsBadRequest checks", func(t *testing.T) { + directBadReqErr := NewBadRequestError(errors.New("direct")) + wrappedBadReqErr := fmt.Errorf("wrapped: %w", directBadReqErr) + + var target *BadRequestError + assert.True(t, AsBadRequest(wrappedBadReqErr, &target)) + assert.Equal(t, directBadReqErr, target) + }) +}