public void ShouldBindTx()
        {
            // Arrange
            BuyNowBinder binder = new BuyNowBinder();

            NameValueCollection form = new NameValueCollection {
                { "emulator_authToken", m_auth },
                { "emulator_returnUrl", m_returnUrl },
                { "emulator_ipnReturnUrl", m_ipnReturnUrl },
                { "amount", m_amount },
                { "currency_code", m_currency },
                { "custom", m_custom },
                { "business", m_account}
            };

            // Act
            Transaction p = binder.Bind(form, m_modelState);

            // Assert
            Assert.AreEqual(m_auth, p.AuthToken);
            Assert.AreEqual(m_returnUrl, p.ReturnUrl);
            Assert.AreEqual(m_amount, p.Amount);
            Assert.AreEqual(m_currency, p.Currency);
            Assert.AreEqual(m_custom, p.Custom);
            Assert.AreEqual(m_account, p.Account);
        }
        public ActionResult Process(HttpRequestBase request, ModelStateDictionary modelState)
        {
            BuyNowBinder binder = new BuyNowBinder();
            Transaction tx = binder.Bind(request.Form, modelState);

            if (!modelState.IsValid)
            {
                throw new ErrorDataException(modelState);
            }

            m_txRepository.Insert(tx);

            return new RedirectToRouteResult(new RouteValueDictionary(new {
                controller = "BuyNow",
                action = "BuyNow",
                txId = tx.Id
            }));
        }
        public void ShouldFailIfMissingAccount()
        {
            // Arrange
            BuyNowBinder binder = new BuyNowBinder();

            NameValueCollection form = new NameValueCollection {
                { "emulator_authToken", m_auth },
                { "emulator_returnUrl", m_returnUrl },
                { "emulator_ipnReturnUrl", m_ipnReturnUrl },
                { "amount", m_amount },
                { "currency_code", m_currency },
                { "custom", m_custom }
            };

            // Act
            Transaction p = binder.Bind(form, m_modelState);

            // Assert
            Assert.AreEqual(null, p);
            Assert.IsFalse(m_modelState.IsValid);
        }