package auditlogsender

import (
	"errors"
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

func TestWrapAuditError(t *testing.T) {
	var err error

	// erorr nil
	err = wrapAuditError(nil)
	require.NoError(t, err)

	// general error
	err = wrapAuditError(errors.New("general error"))
	assert.Equal(t, "general error", err.Error())

	// bizerr.BizError with request error code
	err = wrapAuditError(
		bizerr.WrapErrorWithCode(errors.New("bottom error"), bizerr.ErrCodeParams, "xxx request error"),
	)
	assert.Equal(t, "xxx request error", err.Error())

	// bizerr.BizError with business error code
	err = wrapAuditError(
		bizerr.WrapErrorWithCode(errors.New("bottom error"), bizerr.ErrCodeParams, "xxx business error"),
	)
	assert.Equal(t, "xxx business error", err.Error())

	// bizerr.BizError with internal error code
	err = wrapAuditError(
		bizerr.WrapErrorWithCode(errors.New("bottom error"), bizerr.GeneralInternalErrorCode, "xxx internal error"),
	)
	assert.Equal(t, "internal error", err.Error())
}
