Exemplo n.º 1
0
        /// <summary>
        /// Метод вызывается при старте службы и запускает в отдельном потоке бесконечный цикл опроса серверов WebMoney
        /// </summary>
        public void Start()
        {
            if (threadRequestWallet != null && threadRequestWallet.IsAlive) return;
            wmTransferCache = new WebMoneyTransferCache(ThreadSleepMilliseconds);

            isStopping = false;
            threadRequestWallet = new Thread(RequestWalletLoop);
            threadRequestWallet.Start();

            Logger.Info("Поток опроса WebMoney службы WebMoneyService запущен");
        }
Exemplo n.º 2
0
        /// <summary>
        /// Метод вызывается при старте службы и запускает в отдельном потоке бесконечный цикл опроса серверов WebMoney
        /// </summary>
        public void Start()
        {
            if (threadRequestWallet != null && threadRequestWallet.IsAlive)
            {
                return;
            }
            wmTransferCache = new WebMoneyTransferCache(ThreadSleepMilliseconds);


            isStopping          = false;
            threadRequestWallet = new Thread(RequestWalletLoop);
            threadRequestWallet.Start();

            Logger.Info("Поток опроса WebMoney службы WebMoneyService запущен");
        }
        public void GetActualTransactionTest()
        {
            var wmTransferCache = new WebMoneyTransferCache(100, MoqPaymentAccessor.MakeMoq().Object);

            var r1 = wmTransferCache.GetActualTransaction(); //Первое обращение на 3 месяца назад
            Assert.NotNull(r1);
            Assert.AreEqual(1, r1.Count);

            var r2 = wmTransferCache.GetActualTransaction(); // Второе обращение на 30 секунд назад
            Assert.NotNull(r2);
            Assert.AreEqual(0, r2.Count);

            MoqPaymentAccessor.AddNewTransfer(); //Поступил новый платёж за последние 30 секунд

            var r3 = wmTransferCache.GetActualTransaction(); // Второе обращение на 30 секунд назад
            Assert.NotNull(r3);
            Assert.AreEqual(1, r3.Count);

            wmTransferCache.LastRequestDate = dateTimeNow.AddMonths(-5); // Неадекватные дата и Id предыдущей транзакции зечисления - должен запросить за 3 месяца
            wmTransferCache.LastRequestTransferId = 5;
            var r4 = wmTransferCache.GetActualTransaction();
            Assert.NotNull(r4);
            Assert.AreEqual(2, r4.Count);

            // Неадекватные дата (она выправиться в логике "GetActualTransaction"), но адекватный Id предыдущего трансвера зачисления -
            // должен выбрать все транзакции ПОСЛЕ указанной (948396383). На данный момент будет выбрана только одна
            // т.к. всего транзакций на зачисление - две (первая указана - вторую вернёт).
            wmTransferCache.LastRequestDate = dateTimeNow.AddMonths(-5);
            wmTransferCache.LastRequestTransferId = 959076445;
            var r5 = wmTransferCache.GetActualTransaction();
            Assert.NotNull(r5);
            Assert.AreEqual(1, r5.Count);
            Assert.AreEqual(959076446, r5[0].Id);

            wmTransferCache.LastRequestDate = new DateTime(3000,1,1); // генерируем исключение
            var r6 = wmTransferCache.GetActualTransaction();
            Assert.IsNull(r6);

            wmTransferCache.LastRequestDate = new DateTime(2014, 1, 1, 0, 0, 0); // запрашиваем за дату в которой нет транзакций.
            var r7 = wmTransferCache.GetActualTransaction();
            Assert.NotNull(r7);
            Assert.AreEqual(0, r7.Count);
        }
        public void XmlPropertiesTest()
        {
            // Файл настроек отсутствует.
            var wmTransferCache = new WebMoneyTransferCache(1000, MoqPaymentAccessor.MakeMoq().Object);

            var testDateValue0 = wmTransferCache.LastRequestDate;
            var testIdValue0 = wmTransferCache.LastRequestTransferId;

            Assert.IsNull(testDateValue0);
            Assert.IsNull(testIdValue0);

            wmTransferCache.LastRequestDate = dateTimeNow;
            wmTransferCache.LastRequestTransferId = 5;

            var testDateValue1 = wmTransferCache.LastRequestDate;
            var testIdValue1 = wmTransferCache.LastRequestTransferId;

            Assert.AreEqual(dateTimeNow, testDateValue1);
            Assert.AreEqual(5, testIdValue1);

            //Файл настроек создан. Теперь попробуем из него прочитать данные новым экземпляром WebMoneyTransferCache

            var voidTransferCache = new WebMoneyTransferCache(1000, MoqPaymentAccessor.MakeMoq().Object);

            var testDateValue2 = voidTransferCache.LastRequestDate;
            var testIdValue2 = voidTransferCache.LastRequestTransferId;

            Assert.NotNull(testDateValue2 != null);
            // ReSharper disable PossibleInvalidOperationException
            Assert.AreEqual(dateTimeNow.Date, testDateValue2.Value.Date);
            // ReSharper restore PossibleInvalidOperationException
            Assert.AreEqual(dateTimeNow.Hour, testDateValue2.Value.Hour);
            Assert.AreEqual(dateTimeNow.Minute, testDateValue2.Value.Minute);
            Assert.AreEqual(dateTimeNow.Second, testDateValue2.Value.Second);
            Assert.AreEqual(5, testIdValue2);

            voidTransferCache.LastRequestDate = null;
            voidTransferCache.LastRequestTransferId = null;

            Assert.AreEqual(dateTimeNow.Date, testDateValue2.Value.Date);
            Assert.AreEqual(dateTimeNow.Hour, testDateValue2.Value.Hour);
            Assert.AreEqual(dateTimeNow.Minute, testDateValue2.Value.Minute);
            Assert.AreEqual(dateTimeNow.Second, testDateValue2.Value.Second);
            Assert.AreEqual(5, testIdValue2);
        }