public void TestDoubleFeeWasNotCharged()
        {
            var repo = new WalletRepository();
            var hasPaid = repo.HasUserPaidTheService(conn, paidService, srvSubscriber.ID);
            Assert.IsFalse(hasPaid, "HasUserPaidTheService - пользователь еще не оплатил услугу");
            // сбацать платеж
            var error = repo.ChargeFeeOnSubscription(conn, paidService, srvSubscriber.ID, false);
            Assert.AreEqual(WalletError.OK, error, "Платеж сформирован");
            hasPaid = repo.HasUserPaidTheService(conn, paidService, srvSubscriber.ID);
            Assert.IsTrue(hasPaid, "HasUserPaidTheService - пользователь таки уже оплатил услугу");

            var userMoneyBefore = conn.WALLET.First(w => w.User == srvSubscriber.ID);
            error = repo.ChargeFeeOnSubscription(conn, paidService, srvSubscriber.ID, false);
            Assert.AreEqual(WalletError.OK, error, "Повторный платеж сформирован");
            var userMoneyAfter = conn.WALLET.First(w => w.User == srvSubscriber.ID);
            Assert.AreEqual(userMoneyBefore, userMoneyAfter, "Лишних денег не списано за повторный платеж");
        }
        public void TestGetUserWalletSubscriptionAndLastPaymentsInner()
        {
            var user = conn.PLATFORM_USER.First(u => u.SUBSCRIPTION.Count > 2 && u.TRANSFER.Count > 5);
            var subsCount = user.SUBSCRIPTION.Count;

            int paymentsTotal;
            List<Contract.Entity.Subscription> subscriptions;
            List<Transfer> transfers;
            WalletError error;

            var repo = new WalletRepository();
            var wallet = repo.GetUserWalletSubscriptionAndLastPaymentsInner(user.Login,
                100, out paymentsTotal, out subscriptions, out transfers, out error);

            Assert.AreEqual(WalletError.OK, error, "GetUserWalletSubscriptionAndLastPaymentsInner - должно быть ОК");
            Assert.IsNotNull(wallet, "GetUserWalletSubscriptionAndLastPaymentsInner - кошелек должен быть получен");
            Assert.Greater(paymentsTotal, 5, "GetUserWalletSubscriptionAndLastPaymentsInner - платежей должно быть больше N");
            Assert.Greater(transfers.Count, 0, "GetUserWalletSubscriptionAndLastPaymentsInner - платежи должны быть получены");
            Assert.AreEqual(subscriptions.Count, subsCount, "GetUserWalletSubscriptionAndLastPaymentsInner - подписки должны быть получены");
            var distinctSubscriptionServiceAccounts =
                subscriptions.Select(s => s.PaidService.AccountId).Distinct().Count();
            Assert.AreEqual(distinctSubscriptionServiceAccounts, subscriptions.Count,
                "GetUserWalletSubscriptionAndLastPaymentsInner - инф. о подписке должна быть заполнена");
        }