package payments import ( "testing" customer "git.sendico.io/tech/sxchnge/product/customers/model" "github.com/stretchr/testify/require" "go.mongodb.org/mongo-driver/v2/bson" "go.uber.org/zap" ) func TestSignupAndWalletReadEnsureCustomerCurrencyAccounts(t *testing.T) { a := &customer.Account{} a.ID = bson.NewObjectID() p := &provider{namespace: "provider"} s := &Service{Provider: p, Identity: identity{}, Logger: zap.NewNop(), Factors: &factors{}, Store: &memoryStore{records: map[bson.ObjectID]Record{}}} require.NoError(t, s.Ensure(t.Context(), a)) require.Equal(t, "subject", p.setupSubject) snapshot, err := s.Fetch(t.Context(), a) require.NoError(t, err) require.Len(t, snapshot.Accounts, 1) require.Equal(t, 2, p.setupCalls) p.setupErr = Unavailable _, err = s.Fetch(t.Context(), a) require.ErrorIs(t, err, Unavailable) require.Error(t, s.Ensure(t.Context(), a)) require.Error(t, s.Ensure(t.Context(), nil)) }