示例#1
0
        public void OrderSystem_UnitTest_Payments_Invoice_SaveAndRetrieveSucceed()
        {
            Cart           cart;
            Cart           cartVerify;
            InvoicePayment payment;
            InvoicePayment paymentVerify;
            string         invoiceNumber = "3511122A";

            //A cart has to exist for a payment instance to be created
            cart = OrderHelper.CreateCartSimple(Guid.NewGuid());
            cart.OrderForms[0].Payments.Clear();

            //create invoice payment to test
            payment = (InvoicePayment)OrderHelper.CreateInvoicePayment();
            payment.InvoiceNumber = invoiceNumber;

            //save the cart and then retrieve the cart from the database
            cartVerify = SaveAndRetrieveCart(cart, payment);

            //confirm the payment is retrieved
            Assert.AreNotEqual(cartVerify.OrderForms[0].Payments.Count, 0, "Invoice Payment not saved to the database");

            //confirm the correct type returned
            Assert.AreEqual(cartVerify.OrderForms[0].Payments[0].GetType(), typeof(InvoicePayment), "InvoicePayment type not saved properly.");

            //verify properties set and returned correctly
            paymentVerify = (InvoicePayment)cartVerify.OrderForms[0].Payments[0];
            Assert.AreEqual(paymentVerify.InvoiceNumber, invoiceNumber, "InvoicePayment fields not saved to the database.");
        }
示例#2
0
        public void OrderSystem_PaymentPlan_CreateFromOrder_FirstPurchaseOrder()
        {
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            cart.OrderForms[0].Payments.Clear();
            cart.OrderForms[0].Payments.Add(OrderHelper.CreateCreditCardPayment());
            cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            //cart.RunWorkflow("CartCheckout");
            cart.AcceptChanges();

            // Create payment plan
            PaymentPlan plan = cart.SaveAsPaymentPlan();

            // Set some payment plan values
            // Monthly subscription for a year
            plan.CycleMode           = PaymentPlanCycle.Months;
            plan.CycleLength         = 1;
            plan.MaxCyclesCount      = 12;
            plan.StartDate           = DateTime.UtcNow;
            plan.EndDate             = DateTime.UtcNow.AddMonths(13);
            plan.LastTransactionDate = DateTime.UtcNow;

            // Send emails
            OrderHelper.SendEmail(plan, "order-paymentplan-confirm");
            OrderHelper.SendEmail(plan, "order-paymentplan-notify");

            // Now create first PO from the payment plan
            PurchaseOrder po = plan.SaveAsPurchaseOrder();

            // Validate
            Assert.AreEqual(po.OrderForms[0].Payments.Count, 1);
        }
示例#3
0
        public void OrderSystem_UnitTest_Payments_CashCard_SaveAndRetrieveSucceed()
        {
            Cart            cart;
            Cart            cartVerify;
            CashCardPayment payment;
            CashCardPayment paymentVerify;
            string          cashCardNumber        = "111";
            string          securityCode          = "2323";
            string          propertyMismatchError = "CashCardPayment fields not saved to the database.";

            //A cart has to exist for a payment instance to be created
            cart = OrderHelper.CreateCartSimple(Guid.NewGuid());
            cart.OrderForms[0].Payments.Clear();

            //create cash card payment
            payment = (CashCardPayment)OrderHelper.CreateCashCardPayment();
            payment.CashCardNumber       = cashCardNumber;
            payment.CashCardSecurityCode = securityCode;

            //save the cart and then retrieve the cart from the database
            cartVerify = SaveAndRetrieveCart(cart, payment);

            //confirm the payment is retrieved correctly
            Assert.AreNotEqual(cartVerify.OrderForms[0].Payments.Count, 0, "Cash Card Payment not saved to the database");

            //confirm the payment is of the right type
            Assert.AreEqual(cartVerify.OrderForms[0].Payments[0].GetType(), typeof(CashCardPayment), "CashCardPayment type not saved properly.");

            //confirm payment properties
            paymentVerify = (CashCardPayment)cartVerify.OrderForms[0].Payments[0];
            Assert.AreEqual(paymentVerify.CashCardNumber, cashCardNumber, propertyMismatchError);
            Assert.AreEqual(paymentVerify.CashCardSecurityCode, securityCode, propertyMismatchError);
        }
示例#4
0
        public void OrderSystem_UnitTest_Payments_GiftCardSucceed()
        {
            // Creating cart fails
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            cart.OrderForms[0].Payments.Clear();
            cart.OrderForms[0].Payments.Add(OrderHelper.CreateGiftCardPayment());
            cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            cart.RunWorkflow("CartCheckout");
            cart.AcceptChanges();
            PurchaseOrder po = cart.SaveAsPurchaseOrder();

            po = OrderContext.Current.GetPurchaseOrder(po.CustomerId, po.OrderGroupId);

            // Validate purchase order
            Assert.AreEqual(po.OrderForms[0].Payments.Count, 1);
            // Delete PO
            po.Delete();
            po.AcceptChanges();
            // Assert that PO is deleted
            Assert.IsTrue(po.ObjectState == MetaObjectState.Deleted);
            // Delete cart
            cart.Delete();
            cart.AcceptChanges();
            // Assert that cart is deleted
            Assert.IsTrue(cart.ObjectState == MetaObjectState.Deleted);
        }
示例#5
0
        private Cart CreateShoppingCart()
        {
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            // No need to save cart before executing the workflows, they can be executed to the objects in memory
            // cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            cart.RunWorkflow("CartCheckout");
            return(cart);
        }
示例#6
0
        public void OrderSystem_UnitTest_CreateCartAndPurchaseOrderWithWorkflowSucceed()
        {
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            // No need to save cart before executing the workflows, they can be executed to the objects in memory
            // cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            cart.RunWorkflow("CartCheckout");
            //cart.AcceptChanges();
            PurchaseOrder po = cart.SaveAsPurchaseOrder();
            // Delete original cart, no need since it was never saved
            // cart.Delete();
            // cart.AcceptChanges();
        }
示例#7
0
        private void cleanerTest() // I think
        {
            // Create cart
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            getCustomerNames();

            Random random = new Random((int)DateTime.Now.TimeOfDay.TotalMilliseconds);

            String customerFullName  = _customerNames[random.Next(0, _customerNames.Length - 1)];
            int    space             = customerFullName.IndexOf(' ');
            String customerFirstName = customerFullName.Substring(0, space);
            String customerLastName  = customerFullName.Substring(space + 1);
            String customerHomeId    = customerFullName + "\'s " + "Home";

            cart.CustomerName                = customerFullName;
            cart.OrderAddresses[0].Name      = customerHomeId;
            cart.OrderAddresses[0].FirstName = customerFirstName;
            cart.OrderAddresses[0].LastName  = customerLastName;

            #region Add items to cart

            // Random number of line items in an order
            int itemNum = random.Next(3, 10);
            // Add remaining items since default cart creates 3 line items
            for (int i = 3; i < itemNum; i++)
            {
                cart.OrderForms[0].LineItems.Add(OrderHelper.CreateLineItem());
            }
            // Overwrite default line item info
            for (int i = 0; i < itemNum; i++)
            {
                int quantity = random.Next(1, 10);
                cart.OrderForms[0].LineItems[i].Quantity = quantity;
                //cart.OrderForms[0].LineItems[i].ListPrice =
            }
            cart.OrderForms[0].Payments.Add(OrderHelper.CreateCreditCardPayment());
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            cart.RunWorkflow("CartCheckout");

            #endregion
            // Last step
            cart.SaveAsPurchaseOrder();
        }
示例#8
0
        public void OrderSystem_UnitTest_Payments_CashCardSucceed()
        {
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            cart.OrderForms[0].Payments.Clear();
            cart.OrderForms[0].Payments.Add(OrderHelper.CreateCashCardPayment());
            cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            cart.RunWorkflow("CartCheckout");
            cart.AcceptChanges();
            PurchaseOrder po = cart.SaveAsPurchaseOrder();

            po = OrderContext.Current.GetPurchaseOrder(po.CustomerId, po.OrderGroupId);

            // Validate
            Assert.AreEqual(po.OrderForms[0].Payments.Count, 1);
        }
示例#9
0
        public void OrderSystem_UnitTest_Payments_CreditCardSucceed()
        {
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            cart.OrderForms[0].Payments.Clear();
            cart.OrderForms[0].Payments.Add(OrderHelper.CreateCreditCardPayment());
            cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            cart.OrderForms[0].Payments[0].Amount = cart.Total;
            // Following line throws exception:
            // "Authorize.NET payment gateway is not configured correctly. User is not set.."
            cart.RunWorkflow("CartCheckout");
            cart.AcceptChanges();
            PurchaseOrder po = cart.SaveAsPurchaseOrder();

            po = OrderContext.Current.GetPurchaseOrder(po.CustomerId, po.OrderGroupId);

            // Validate
            Assert.AreEqual(po.OrderForms[0].Payments.Count, 1);
        }
示例#10
0
        public void OrderSystem_Notifications_CreditCard_CustomerEmail()
        {
            Cart cart = OrderHelper.CreateCartSimple(Guid.NewGuid());

            cart.OrderForms[0].Payments.Clear();
            cart.OrderForms[0].Payments.Add(OrderHelper.CreateCreditCardPayment());
            cart.AcceptChanges();
            cart.RunWorkflow("CartValidate");
            cart.RunWorkflow("CartPrepare");
            //cart.RunWorkflow("CartCheckout");
            cart.AcceptChanges();
            PurchaseOrder po = cart.SaveAsPurchaseOrder();

            po = OrderContext.Current.GetPurchaseOrder(po.CustomerId, po.OrderGroupId);

            // Send emails
            OrderHelper.SendEmail(po, "order-purchaseorder-confirm");
            OrderHelper.SendEmail(po, "order-purchaseorder-notify");

            // Validate
            Assert.AreEqual(po.OrderForms[0].Payments.Count, 1);
        }
示例#11
0
        public void OrderSystem_UnitTest_Payments_Other_SaveAndRetrieveSucceed()
        {
            Cart         cart;
            Cart         cartVerify;
            OtherPayment payment;

            //A cart has to exist for a payment instance to be created
            cart = OrderHelper.CreateCartSimple(Guid.NewGuid());
            cart.OrderForms[0].Payments.Clear();

            //create other payment to validate test account
            payment = (OtherPayment)OrderHelper.CreateOtherPayment();

            //save the cart and then retrieve the cart from the database
            cartVerify = SaveAndRetrieveCart(cart, payment);

            //confirm the payment is retrieved
            Assert.AreNotEqual(cartVerify.OrderForms[0].Payments.Count, 0, "OtherPayment not saved to the database");

            //confirm the correct type is returned
            Assert.AreEqual(cartVerify.OrderForms[0].Payments[0].GetType(), typeof(OtherPayment), "OtherPayment type not saved properly.");
        }
示例#12
0
        public void OrderSystem_UnitTest_Payments_GiftCard_SaveAndRetrieveSucceed()
        {
            Cart            cart;
            Cart            cartVerify;
            GiftCardPayment payment;
            GiftCardPayment paymentVerify;
            string          cardNumber            = "315152C";
            string          securityNumber        = "5112";
            string          cardType              = "Mastercard";
            int             expMonth              = 3;
            int             expYear               = 2009;
            string          propertyMismatchError = "GiftCardPayment fields not saved to the database.";

            //A cart has to exist for a payment instance to be created
            cart = OrderHelper.CreateCartSimple(Guid.NewGuid());
            cart.OrderForms[0].Payments.Clear();

            //create gift card payment to validate test account
            payment                      = (GiftCardPayment)OrderHelper.CreateGiftCardPayment();
            payment.CardType             = cardType;
            payment.GiftCardNumber       = cardNumber;
            payment.GiftCardSecurityCode = securityNumber;
            payment.ExpirationMonth      = expMonth;
            payment.ExpirationYear       = expYear;

            //save the cart and then retrieve the cart from the database
            cartVerify = SaveAndRetrieveCart(cart, payment);

            //confirm the payment is retrieved
            Assert.AreNotEqual(cartVerify.OrderForms[0].Payments.Count, 0, "Gift Card Payment not saved to the database");

            Assert.AreEqual(cartVerify.OrderForms[0].Payments[0].GetType(), typeof(GiftCardPayment), "GiftCardPayment type not saved properly.");

            paymentVerify = (GiftCardPayment)cartVerify.OrderForms[0].Payments[0];
            Assert.AreEqual(paymentVerify.GiftCardNumber, cardNumber, propertyMismatchError);
            Assert.AreEqual(paymentVerify.GiftCardSecurityCode, securityNumber, propertyMismatchError);
            Assert.AreEqual(paymentVerify.CardType, cardType, propertyMismatchError);
        }
示例#13
0
        public void OrderSystem_UnitTest_Payments_CreditCard_SaveAndRetrieveSucceed()
        {
            Cart cart;
            Cart cartVerify;
            CreditCardPayment payment;
            CreditCardPayment paymentVerify;
            string            cardType   = "Visa";
            int    expMonth              = 3;
            int    expYear               = DateTime.Now.AddYears(1).Year;
            string propertyMismatchError = "CreditCardPayment fields not saved to the database.";

            //A cart has to exist for a payment instance to be created
            cart = OrderHelper.CreateCartSimple(Guid.NewGuid());
            cart.OrderForms[0].Payments.Clear();

            //create cc payment to validate test account
            payment                 = (CreditCardPayment)OrderHelper.CreateCreditCardPayment();
            payment.CardType        = cardType;
            payment.ExpirationMonth = expMonth;
            payment.ExpirationYear  = expYear;

            //save the cart and then retrieve the cart from the database
            cartVerify = SaveAndRetrieveCart(cart, payment);

            //confirm the payment is retrieved
            Assert.AreNotEqual(cartVerify.OrderForms[0].Payments.Count, 0, "Credit Card Payment not saved to the database");

            //verify returned type is correct
            Assert.AreEqual(cartVerify.OrderForms[0].Payments[0].GetType(), typeof(CreditCardPayment), "CreditCardPayment type not saved properly.");

            //verify properties set and returned correctly
            paymentVerify = (CreditCardPayment)cartVerify.OrderForms[0].Payments[0];
            Assert.AreEqual(paymentVerify.CardType, cardType, propertyMismatchError);
            Assert.AreEqual(paymentVerify.ExpirationMonth, expMonth, propertyMismatchError);
            Assert.AreEqual(paymentVerify.ExpirationYear, expYear, propertyMismatchError);
        }
示例#14
0
        public void OrderSystem_LineItemMetaDataSave()
        {
            bool      metaFieldExists  = false;
            MetaField brandField       = null;
            string    fieldName        = "Brand";
            bool      metaFieldAdded   = false;
            string    testForValue     = "Test";
            string    returnedValue    = "";
            Cart      cart             = null;
            Cart      newCart          = null;
            Cart      retrieveTestCart = null;
            Guid      customerId       = Guid.NewGuid();

            //Create cart. This cart is just used to get the lineitem meta class information
            try
            {
                cart = OrderHelper.CreateCartSimple(customerId);
            }
            catch (Exception exc)
            {
                if (exc.Message == "'maxValue' must be greater than zero.\r\nParameter name: maxValue")
                {
                    Assert.Fail("Check your ApplicationId");
                }
                else
                {
                    throw exc;
                }
            }

            //first make sure the meta field exists in the collection for the LineItem  collection
            MetaDataContext context = OrderContext.MetaDataContext;
            MetaClass       mc      = cart.OrderForms[0].LineItems[0].MetaClass;

            for (int i = 0; i < mc.MetaFields.Count; i++)
            {
                if (mc.MetaFields[i].Name.Equals(fieldName, StringComparison.OrdinalIgnoreCase))
                {
                    brandField      = mc.MetaFields[i];
                    metaFieldExists = true;
                    break;
                }
            }

            if (!metaFieldExists)
            {
                brandField = MetaField.Load(context, fieldName);

                if (brandField == null)
                {
                    brandField     = MetaField.Create(context, "Mediachase.Commerce.Orders.System", fieldName, fieldName, "", MetaDataType.ShortString, 100, true, false, false, false, false);
                    metaFieldAdded = true;
                }
                mc.AddField(brandField);
            }

            //use a new customer id for the new cart
            customerId = Guid.NewGuid();

            //Create a new cart that will be used to add meta data to and save
            newCart = OrderHelper.CreateRetrieveOneLineItemCart(customerId);

            //now add a value for this new metafield in the first lineitem in the cart
            newCart.OrderForms[0].LineItems[0][fieldName] = testForValue;
            newCart.AcceptChanges();

            //now retrieve the cart anew and test
            retrieveTestCart = Cart.LoadByCustomerAndName(newCart.CustomerId, newCart.Name);

            //check for the value
            if (retrieveTestCart.OrderForms[0].LineItems[0][fieldName] != null)
            {
                returnedValue = retrieveTestCart.OrderForms[0].LineItems[0][fieldName].ToString();
            }

            if (!metaFieldExists)
            {
                mc.DeleteField(brandField);
            }

            //delete the field if added
            if (metaFieldAdded)
            {
                MetaField.Delete(context, brandField.Id);
            }

            if (testForValue != returnedValue)
            {
                Assert.Fail("Value was not saved");
            }
        }