public void ShouldExecuteInProgressConfirm()
        {
            DummyLoggedProvider provider = new DummyLoggedProvider();

            paymentInfo.State = State.IN_PROGRESS_CONFIRM;

            PaymentRequest request = new PaymentRequest(webBrowser, paymentInfo);
            PaymentInfo    result  = provider.Execute(request);

            Assert.AreSame(result, request.PaymentInfo);
            Assert.AreEqual("101.00", result.Amount);
            Assert.AreEqual("Test Biller2", result.BillerName);
            Assert.AreEqual("67890", result.PostalCode);
            Assert.AreEqual(State.PAID, result.State);

            paymentInfo.State = State.IN_PROGRESS_CONFIRM;

            provider.cancel = true;

            result = provider.Execute(request);
            Assert.AreSame(result, request.PaymentInfo);
            Assert.AreEqual("101.00", result.Amount);
            Assert.AreEqual("Test Biller2", result.BillerName);
            Assert.AreEqual("67890", result.PostalCode);
            Assert.AreEqual(State.INVALID, result.State);
        }
        public void ShouldIgnoreExecutionAsMaxReloadReached()
        {
            AbstractProvider provider = new DummyLoggedProvider();

            Settings.Default.ReloadCount = Settings.Default.MaxReload + 1;

            PaymentInfo result = provider.Execute(new PaymentRequest(webBrowser, paymentInfo));

            Assert.AreEqual(result.ToString(), paymentInfo.ToString());
        }
        public void ShouldExecuteWithInvalidInfo()
        {
            AbstractProvider provider = new DummyLoggedProvider();

            paymentInfo.State = State.INVALID;
            PaymentInfo copy   = PaymentInfo.ValueOf(paymentInfo.ToString());
            PaymentInfo result = provider.Execute(new PaymentRequest(webBrowser, paymentInfo));

            Assert.AreNotSame(copy, result);
            Assert.AreEqual(copy.ToString(), result.ToString());
        }
        public void ShouldExecuteIdle()
        {
            AbstractProvider provider = new DummyLoggedProvider();
            PaymentRequest   request  = new PaymentRequest(webBrowser, paymentInfo);
            PaymentInfo      result   = provider.Execute(request);

            Assert.AreSame(result, request.PaymentInfo);
            Assert.AreEqual("100.00", result.Amount);
            Assert.AreEqual("Test Biller", result.BillerName);
            Assert.AreEqual("Transfer", result.DefinedTransferName);
            Assert.AreEqual("12345", result.PostalCode);
            Assert.AreEqual(State.IN_PROGRESS, result.State);
        }
        private void ExecuteInProgress(bool changeAccountNo, String definedTransfer, State state)
        {
            DummyLoggedProvider provider = new DummyLoggedProvider();

            ShouldExecuteIdle();

            provider.changeAccountNo = changeAccountNo;
            if (definedTransfer.Length == 0)
            {
                paymentInfo.DefinedTransferName = definedTransfer;
            }
            PaymentRequest request = new PaymentRequest(webBrowser, paymentInfo);
            PaymentInfo    result  = provider.Execute(request);

            Assert.AreEqual("200.00", result.Amount);
            Assert.AreEqual("Test Biller1", result.BillerName);
            Assert.AreEqual(definedTransfer, result.DefinedTransferName);
            Assert.AreEqual("12345", result.PostalCode);
            Assert.AreEqual(state, result.State);
        }