Files
sxchnge/backend/pkg/merrors/ledger_test.go
T

49 lines
1.6 KiB
Go

package merrors
import (
"errors"
"testing"
"github.com/stretchr/testify/require"
)
func TestLedgerReasonRoundTrip(t *testing.T) {
err := LedgerIdempotencyConflict("conflicting command")
reason, ok := Reason(err)
require.True(t, ok)
require.Equal(t, ReasonLedgerIdempotencyConflict, reason)
restored, ok := FromReason(reason, "conflicting command")
require.True(t, ok)
require.True(t, errors.Is(restored, ErrLedgerIdempotencyConflict))
require.True(t, errors.Is(restored, ErrDataConflict))
}
func TestAccountNotEligibleReasonRoundTrip(t *testing.T) {
err := AccountNotEligible("account is frozen")
reason, ok := Reason(err)
require.True(t, ok)
require.Equal(t, ReasonAccountNotEligible, reason)
require.True(t, errors.Is(err, ErrAccountNotEligible))
require.True(t, errors.Is(err, ErrFailedPrecondition))
restored, ok := FromReason(reason, "account is frozen")
require.True(t, ok)
require.True(t, errors.Is(restored, ErrAccountNotEligible))
require.True(t, errors.Is(restored, ErrFailedPrecondition))
}
func TestLedgerAccessViolationReasonRoundTrip(t *testing.T) {
err := LedgerAccessViolation("from_account: account does not belong to organization")
reason, ok := Reason(err)
require.True(t, ok)
require.Equal(t, ReasonLedgerAccessViolation, reason)
require.True(t, errors.Is(err, ErrLedgerAccessViolation))
require.True(t, errors.Is(err, ErrFailedPrecondition))
restored, ok := FromReason(reason, "from_account: account does not belong to organization")
require.True(t, ok)
require.True(t, errors.Is(restored, ErrLedgerAccessViolation))
require.True(t, errors.Is(restored, ErrFailedPrecondition))
}