49 lines
1.6 KiB
Go
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))
|
|
}
|