Ejemplo n.º 1
0
        private static void RefundPayment_Federated()
        {
            Console.WriteLine("Begin RefundFederatedPaymentUX");

            var context   = new AnonymousCustomerBob().Context;
            var container = context.ShopsContainer();
            var orderid   = Scenarios.SimplePhysical2Items.Run(new AnonymousCustomerBob().Context).Result;
            var order     = Orders.GetOrder(container, orderid);
            var paymentId = order.Components.OfType <Sitecore.Commerce.Plugin.Payments.FederatedPaymentComponent>().FirstOrDefault()?.Id;

            Orders.RunPendingOrdersMinion(context);
            Orders.RunReleasedOrdersMinion(context);
            Orders.RunSettleSalesActivitiesMinion(context);
            var view = Proxy.GetValue(ShopsContainer.GetEntityView(orderid, "RefundPayment", "RefundPayment", paymentId));

            var result = Proxy.DoCommand(ShopsContainer.DoAction(view));

            result.Should().NotBeNull();
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var updatedOrderView = Proxy.GetValue(ShopsContainer.GetEntityView(orderid, "Master", string.Empty, string.Empty));

            var salesActivities = updatedOrderView.ChildViews.FirstOrDefault(p => p.Name.Equals("SalesActivities")) as EntityView;

            salesActivities.Should().NotBeNull();
            //There should be 2 Sales Activities now. The original one and the one for the refund.
            salesActivities?.ChildViews.Count.Should().Be(2);

            // Get the OrderPayments View and validate that the payment is now gone
            var paymentsView = Proxy.GetValue(ShopsContainer.GetEntityView(orderid, "OrderPayments", string.Empty, string.Empty));

            paymentsView.ChildViews.Count().Should().Be(0);
        }
        private static void ApplyingCartExclusiveCouponsPromotions()
        {
            Console.WriteLine("Begin ApplyingCartExclusiveCouponsPromotions");

            var bob       = new AnonymousCustomerBob();
            var container = bob.Context.ShopsContainer();
            var cartId    = Guid.NewGuid().ToString("B");

            // add to cart scoutpride
            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 4));

            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add coupon cart exclusive 5% off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNEC5P"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add coupon cart exclusive 5% off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNEC5A"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Should().NotBeNull();
            cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();
            var messages = cart.Components.OfType <MessagesComponent>().FirstOrDefault();

            messages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
            messages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(2);
            messages?.Messages.FirstOrDefault(m => m.Code.Equals("Promotions"))?.Text.Should().Be("PromotionExcluded: Entity-Promotion-AdventureWorksPromotionBook-Cart5OffExclusiveCouponPromotion");
            messages?.Messages.LastOrDefault(m => m.Code.Equals("Promotions"))?.Text.Should().Be("PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-Cart5PctOffExclusiveCouponPromotion");
        }
Ejemplo n.º 3
0
        private static void VoidPayment_Federated(string orderId = "")
        {
            using (new SampleMethodScope())
            {
                if (string.IsNullOrEmpty(orderId))
                {
                    orderId = _orderId;
                }

                var container = new AnonymousCustomerBob().Context.ShopsContainer();
                var order     = Orders.GetOrder(container, orderId);
                var paymentId = order.Components.OfType <FederatedPaymentComponent>()
                                .FirstOrDefault()
                                ?.Id;

                var view = Proxy.GetValue(
                    ShopsContainer.GetEntityView(orderId, "OrderPayments", "VoidPayment", paymentId));
                view.Should().NotBeNull();
                view.Properties.Should().NotBeEmpty();
                var result = Proxy.DoCommand(ShopsContainer.DoAction(view));
                result.Should().NotBeNull();
                result.Messages.Should().NotContainErrors();

                // Get the OrderPayments View and validate that the payment is now gone
                var paymentsView = Proxy.GetValue(
                    ShopsContainer.GetEntityView(orderId, "OrderPayments", string.Empty, string.Empty));
                paymentsView.ChildViews.Count().Should().Be(0);
            }
        }
Ejemplo n.º 4
0
        private static void VoidPayment_Federated(string orderId = "")
        {
            Console.WriteLine("Begin DeleteFederatedPaymentUX");

            if (string.IsNullOrEmpty(orderId))
            {
                orderId = _orderId;
            }

            var container = new AnonymousCustomerBob().Context.ShopsContainer();
            var order     = Orders.GetOrder(container, orderId);
            var paymentId = order.Components.OfType <Sitecore.Commerce.Plugin.Payments.FederatedPaymentComponent>().FirstOrDefault()?.Id;

            var view = Proxy.GetValue(ShopsContainer.GetEntityView(orderId, "OrderPayments", "VoidPayment", paymentId));

            view.Should().NotBeNull();
            view.Properties.Should().NotBeEmpty();
            var result = Proxy.DoCommand(ShopsContainer.DoAction(view));

            result.Should().NotBeNull();
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // Get the OrderPayments View and validate that the payment is now gone
            var paymentsView = Proxy.GetValue(ShopsContainer.GetEntityView(orderId, "OrderPayments", string.Empty, string.Empty));

            paymentsView.ChildViews.Count().Should().Be(0);
        }
        private static void FixedPrice()
        {
            var bob = new AnonymousCustomerBob {
                Context = { Environment = "AdventureWorksShops" }
            };
            var container = bob.Context.ShopsContainer();
            var cartId    = Guid.NewGuid().ToString("B");

            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW055 01|33", 1));

            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();
            result.Models.OfType <Totals>().FirstOrDefault()?.GrandTotal.Amount.Should().Be(9);

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.SellPrice.Amount.Should().Be(9);
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.FixedSellPrice.Should().BeTrue();

            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "AWSELLPRICE"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();
            result.Models.OfType <Totals>().FirstOrDefault()?.GrandTotal.Amount.Should().Be(5);

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.SellPrice.Amount.Should().Be(5);
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.FixedSellPrice.Should().BeTrue();

            result = Proxy.DoCommand(container.RemoveCouponFromCart(cartId, "AWSELLPRICE"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();
            result.Models.OfType <Totals>().FirstOrDefault()?.GrandTotal.Amount.Should().Be(9);

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.SellPrice.Amount.Should().Be(9);
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.FixedSellPrice.Should().BeTrue();
        }
Ejemplo n.º 6
0
        private static void FixedPrice()
        {
            var bob = new AnonymousCustomerBob {
                Context = { Environment = EnvironmentConstants.AdventureWorksShops }
            };
            var container = bob.Context.ShopsContainer();
            var cartId    = Carts.GenerateCartId();

            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW055 01|33", 1));

            result.Messages.Should().NotContainErrors();
            result.Models.OfType <Totals>().FirstOrDefault()?.GrandTotal.Amount.Should().Be(9);

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.SellPrice.Amount.Should().Be(9);
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.FixedSellPrice.Should().BeTrue();

            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "AWSELLPRICE"));
            result.Messages.Should().NotContainErrors();
            result.Models.OfType <Totals>().FirstOrDefault()?.GrandTotal.Amount.Should().Be(5);

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.SellPrice.Amount.Should().Be(5);
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.FixedSellPrice.Should().BeTrue();

            result = Proxy.DoCommand(container.RemoveCouponFromCart(cartId, "AWSELLPRICE"));
            result.Messages.Should().NotContainErrors();
            result.Models.OfType <Totals>().FirstOrDefault()?.GrandTotal.Amount.Should().Be(9);

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.SellPrice.Amount.Should().Be(9);
            cart.Lines.FirstOrDefault()?.Policies.OfType <PurchaseOptionMoneyPolicy>().FirstOrDefault()?.FixedSellPrice.Should().BeTrue();
        }
Ejemplo n.º 7
0
        public static void RunScenarios()
        {
            using (new SampleScenarioScope("Orders UX"))
            {
                try
                {
                    var jeff = new AnonymousCustomerJeff();
                    _orderId = Simple2PhysicalDigitalItems.Run(jeff.Context);
                    _orderId.Should().NotBeNull();
                    HoldOrder(_orderId);

                    OrderFulfillments();

                    SetFulfillment_Digital();
                    SetFulfillment_ShipToMe();
                    SetFulfillment_Split();

                    OrderPayments();
                    VoidPayment_Federated();
                    AddPayment_Federated(64.23M);

                    UndoOnHoldOrder();

                    OrderEntitlements(jeff.Context);

                    OnHoldScenarios();

                    // Run Federated Scenarios
                    var bob = new AnonymousCustomerBob();
                    _orderId = SimplePhysicalDigitalItemsFederatedPayment.Run(bob.Context);
                    _orderId.Should().NotBeNull();
                    HoldOrder(_orderId);

                    OrderFulfillments();

                    SetFulfillment_Digital();
                    SetFulfillment_ShipToMe();
                    SetFulfillment_Split();

                    OrderPayments();
                    VoidPayment_Federated();
                    AddPayment_Federated(64.23M);
                    RefundPayment_Federated();

                    _orderId = SimplePhysical2Items.Run(jeff.Context);
                    _orderId.Should().NotBeNull();
                    HoldOrder(_orderId);

                    AddPayment_GiftCard();

                    UndoOnHoldOrder();
                }
                catch (Exception ex)
                {
                    ConsoleExtensions.WriteErrorLine($"Exception in Scenario 'OrdersUX' (${ex.Message}) : Stack={ex.StackTrace}");
                }
            }
        }
Ejemplo n.º 8
0
        private static void ApplyingLineExclusiveMixedPromotions()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart alpine
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW188 06|19", 1));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                cart.Components.OfType <MessagesComponent>().Any().Should().BeFalse();
                cart.Lines.FirstOrDefault().Should().NotBeNull();
                var lineMessages = cart.Lines.FirstOrDefault()
                                   ?.CartLineComponents.OfType <MessagesComponent>()
                                   .FirstOrDefault();
                lineMessages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                lineMessages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(1);
                lineMessages?.Messages.FirstOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be(
                    "PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-LineAlpineParkaExclusivePromotion");

                // add coupon line exclusive 20% off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNEL20P"));
                result.Messages.Should().NotContainErrors();

                cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();
                var cartMessages = cart.Components.OfType <MessagesComponent>().FirstOrDefault();
                cartMessages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                cartMessages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(1);
                cartMessages?.Messages.FirstOrDefault()
                ?.Text.Should()
                .Be(
                    "PromotionExcluded: Entity-Promotion-AdventureWorksPromotionBook-LineAlpineParkaExclusivePromotion");
                lineMessages = cart.Lines.FirstOrDefault()
                               ?.CartLineComponents.OfType <MessagesComponent>()
                               .FirstOrDefault();
                lineMessages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                lineMessages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(1);
                lineMessages?.Messages.LastOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be(
                    "PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-Line20PctOffExclusiveCouponPromotion");
            }
        }
        private static void ApplyingOrderOfPromotionsAndCouponPromotions()
        {
            Console.WriteLine("Begin ApplyingOrderOfPromotionsAndCouponPromotions");

            var bob       = new AnonymousCustomerBob();
            var container = bob.Context.ShopsContainer();
            var cartId    = Guid.NewGuid().ToString("B");

            // add to cart scoutpride
            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 4));

            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Should().NotBeNull();
            cart.Components.OfType <MessagesComponent>().Any().Should().BeFalse();

            // add coupon 15% off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC15P"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Should().NotBeNull();
            cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();

            // add coupon 10% off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC10P"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Should().NotBeNull();
            cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();

            result = Proxy.DoCommand(container.SetCartFulfillment(cartId, bob.Context.Components.OfType <PhysicalFulfillmentComponent>().First()));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
            cart.Should().NotBeNull();
            cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();
            var messages = cart.Components.OfType <MessagesComponent>().FirstOrDefault();

            messages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
            messages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(3);
            messages?.Messages.ToList().FindIndex(m => m.Text.Equals("PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-CartFreeShippingPromotion")).Should().Be(0);
            messages?.Messages.ToList().FindIndex(m => m.Text.Equals("PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-Cart15PctOffCouponPromotion")).Should().Be(1);
            messages?.Messages.ToList().FindIndex(m => m.Text.Equals("PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-Cart10PctOffCouponPromotion")).Should().Be(2);
        }
Ejemplo n.º 10
0
        private static void ApplyingCartExclusivePromotions()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart galaxy
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW535 11|12", 1));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();
                var messages = cart.Components.OfType <MessagesComponent>().FirstOrDefault();
                messages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                messages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(1);
                messages?.Messages.FirstOrDefault()
                ?.Text.Should()
                .Be(
                    "PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-CartGalaxyTentExclusivePromotion");

                // add fulfillment
                result = Proxy.DoCommand(
                    container.SetCartFulfillment(
                        cartId,
                        bob.Context.Components.OfType <PhysicalFulfillmentComponent>().First()));
                result.Messages.Should().NotContainErrors();

                cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();
                messages = cart.Components.OfType <MessagesComponent>().FirstOrDefault();
                messages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                messages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(2);
                messages?.Messages.FirstOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be("PromotionExcluded: Entity-Promotion-AdventureWorksPromotionBook-CartFreeShippingPromotion");
                messages?.Messages.LastOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be(
                    "PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-CartGalaxyTentExclusivePromotion");
            }
        }
        private static void DisabledPromotions()
        {
            Console.WriteLine("Begin DisabledPromotion");

            var bob       = new AnonymousCustomerBob();
            var container = bob.Context.ShopsContainer();
            var cartId    = Guid.NewGuid().ToString("B");

            // add to cart scoutpride
            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1));

            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Should().NotBeNull();
            cart.Components.OfType <MessagesComponent>().Any().Should().BeFalse();
        }
Ejemplo n.º 12
0
        private static void DisabledPromotions()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart scoutpride
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                cart.Components.OfType <MessagesComponent>().Any().Should().BeFalse();
            }
        }
        private static void PromotionCalculationCartAllApply()
        {
            Console.WriteLine("Begin PromotionCalculationCartAllApply");

            var bob       = new AnonymousCustomerBob();
            var container = bob.Context.ShopsContainer();
            var cartId    = Guid.NewGuid().ToString("B");

            // add to cart scoutpride
            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1));

            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add to cart petzl spirit
            result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW014 08|", 1));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add coupon cart 10$ off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC10A"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add coupon cart 10% off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC10P"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Should().NotBeNull();
            var cartTotals = cart.Totals;

            cartTotals?.SubTotal.Amount.Should().Be(69M);
            cartTotals?.AdjustmentsTotal.Amount.Should().Be(-15.90M);
            cartTotals?.GrandTotal.Amount.Should().Be(53.10M);
            var cartPercentAdjustmentTotal = cart.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartSubtotalAmountOffAction"));

            cartPercentAdjustmentTotal.Should().NotBeNull();
            cartPercentAdjustmentTotal?.Adjustment.Amount.Should().Be(-10M);
            var cartAmountAdjustment = cart.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartSubtotalPercentOffAction"));

            cartAmountAdjustment.Should().NotBeNull();
            cartAmountAdjustment?.Adjustment.Amount.Should().Be(-5.90M);
        }
Ejemplo n.º 14
0
        private static void PromotionCalculationCartAllApply()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart scoutpride
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1));
                result.Messages.Should().NotContainErrors();

                // add to cart petzl spirit
                result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW014 08|", 1));
                result.Messages.Should().NotContainErrors();

                // add coupon cart 10$ off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC10A"));
                result.Messages.Should().NotContainErrors();

                // add coupon cart 10% off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC10P"));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                var cartTotals = cart.Totals;
                cartTotals?.SubTotal.Amount.Should().Be(69M);
                cartTotals?.AdjustmentsTotal.Amount.Should().Be(-15.90M);
                cartTotals?.GrandTotal.Amount.Should().Be(53.10M);
                var cartPercentAdjustmentTotal =
                    cart.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartSubtotalAmountOffAction"));
                cartPercentAdjustmentTotal.Should().NotBeNull();
                cartPercentAdjustmentTotal?.Adjustment.Amount.Should().Be(-10M);
                var cartAmountAdjustment =
                    cart.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartSubtotalPercentOffAction"));
                cartAmountAdjustment.Should().NotBeNull();
                cartAmountAdjustment?.Adjustment.Amount.Should().Be(-5.90M);
            }
        }
Ejemplo n.º 15
0
        private static void ApplyingLinePromotions()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart sahara
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW114 06|23", 1));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                var lineTotals = cart.Lines.FirstOrDefault()?.Totals;
                lineTotals?.SubTotal.Amount.Should().Be(120M);
                lineTotals?.AdjustmentsTotal.Amount.Should().Be(-62.5M);
                lineTotals?.GrandTotal.Amount.Should().Be(57.5M);
                var sahara5Off = cart.Lines.FirstOrDefault()
                                 ?.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartItemSubtotalAmountOffAction"));
                sahara5Off.Should().NotBeNull();
                sahara5Off?.Adjustment.Amount.Should().Be(-5M);
                var sahara50PctOff = cart.Lines.FirstOrDefault()
                                     ?.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartItemSubtotalPercentOffAction"));
                sahara50PctOff.Should().NotBeNull();
                sahara50PctOff?.Adjustment.Amount.Should().Be(-57.5M);
                var lineMessages = cart.Lines.FirstOrDefault()
                                   ?.CartLineComponents.OfType <MessagesComponent>()
                                   .FirstOrDefault();
                lineMessages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                lineMessages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(2);
                lineMessages?.Messages.FirstOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be("PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-LineSaharaJacket5OffPromotion");
                lineMessages?.Messages.LastOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be("PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-LineSaharaJacketPromotion");
            }
        }
Ejemplo n.º 16
0
        private static void RefundPayment_Federated()
        {
            using (new SampleMethodScope())
            {
                var context   = new AnonymousCustomerBob().Context;
                var container = context.ShopsContainer();
                var orderid   = SimplePhysical2Items.Run(new AnonymousCustomerBob().Context);
                var order     = Orders.GetOrder(container, orderid);
                var paymentId = order.Components.OfType <FederatedPaymentComponent>()
                                .FirstOrDefault()
                                ?.Id;

                Orders.RunPendingOrdersMinion(context);
                Orders.RunReleasedOrdersMinion(context);
                var view = Proxy.GetValue(
                    ShopsContainer.GetEntityView(orderid, "RefundPayment", "RefundPayment", paymentId));

                var result = Proxy.DoCommand(ShopsContainer.DoAction(view));

                result.Should().NotBeNull();
                result.Messages.Should().NotContainErrors();

                var updatedOrderView = Proxy.GetValue(
                    ShopsContainer.GetEntityView(orderid, "Master", string.Empty, string.Empty));

                var salesActivities =
                    updatedOrderView.ChildViews.FirstOrDefault(p => p.Name.Equals("SalesActivities")) as EntityView;
                salesActivities.Should().NotBeNull();

                //There should be 2 Sales Activities now. The original one and the one for the refund.
                salesActivities?.ChildViews.Count.Should().Be(2);

                // Get the OrderPayments View and validate that the payment is now gone
                var paymentsView = Proxy.GetValue(
                    ShopsContainer.GetEntityView(orderid, "OrderPayments", string.Empty, string.Empty));
                paymentsView.ChildViews.Count().Should().Be(0);
            }
        }
        private static void PromotionCalculationLineAmountAndPercent()
        {
            Console.WriteLine("Begin PromotionCalculationLineAmountAndPercent");

            var bob       = new AnonymousCustomerBob();
            var container = bob.Context.ShopsContainer();
            var cartId    = Guid.NewGuid().ToString("B");

            // add to cart scoutpride
            var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 2));

            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add coupon line 5$ off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNL5A"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            // add coupon line 5% off
            result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNL5P"));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));

            cart.Should().NotBeNull();
            var lineTotals = cart.Lines.FirstOrDefault()?.Totals;

            lineTotals?.SubTotal.Amount.Should().Be(118M);
            lineTotals?.AdjustmentsTotal.Amount.Should().Be(-10.65M);
            lineTotals?.GrandTotal.Amount.Should().Be(107.35M);
            var linePercentAdjustment = cart.Lines.FirstOrDefault()?.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartAnyItemSubtotalPercentOffAction"));

            linePercentAdjustment.Should().NotBeNull();
            linePercentAdjustment?.Adjustment.Amount.Should().Be(-5.65M);
            var lineAmountAdjustment = cart.Lines.FirstOrDefault()?.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartAnyItemSubtotalAmountOffAction"));

            lineAmountAdjustment.Should().NotBeNull();
            lineAmountAdjustment?.Adjustment.Amount.Should().Be(-5M);
        }
Ejemplo n.º 18
0
        private static void ApplyingCartExclusiveCouponsPromotions()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart scoutpride
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 4));
                result.Messages.Should().NotContainErrors();

                // add coupon cart exclusive 5% off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNEC5P"));
                result.Messages.Should().NotContainErrors();

                // add coupon cart exclusive 5% off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNEC5A"));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                cart.Components.OfType <MessagesComponent>().Any().Should().BeTrue();
                var messages = cart.Components.OfType <MessagesComponent>().FirstOrDefault();
                messages?.Messages.Any(m => m.Code.Equals("Promotions")).Should().BeTrue();
                messages?.Messages.Count(m => m.Code.Equals("Promotions")).Should().Be(2);
                messages?.Messages.FirstOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be(
                    "PromotionExcluded: Entity-Promotion-AdventureWorksPromotionBook-Cart5OffExclusiveCouponPromotion");
                messages?.Messages.LastOrDefault(m => m.Code.Equals("Promotions"))
                ?.Text.Should()
                .Be(
                    "PromotionApplied: Entity-Promotion-AdventureWorksPromotionBook-Cart5PctOffExclusiveCouponPromotion");
            }
        }
Ejemplo n.º 19
0
        private static void PromotionCalculationLineAllApply()
        {
            using (new SampleMethodScope())
            {
                var bob       = new AnonymousCustomerBob();
                var container = bob.Context.ShopsContainer();
                var cartId    = Carts.GenerateCartId();

                // add to cart petzl spirit
                var result = Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW014 08|", 1));
                result.Messages.Should().NotContainErrors();

                // add coupon line 5$ off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNL5A"));
                result.Messages.Should().NotContainErrors();

                // add coupon line 5% off
                result = Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNL5P"));
                result.Messages.Should().NotContainErrors();

                var cart = Proxy.GetValue(
                    container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components"));
                cart.Should().NotBeNull();
                var lineTotals = cart.Lines.FirstOrDefault()?.Totals;
                lineTotals?.SubTotal.Amount.Should().Be(10M);
                lineTotals?.AdjustmentsTotal.Amount.Should().Be(-5.25M);
                lineTotals?.GrandTotal.Amount.Should().Be(4.75M);
                var linePercentAdjustment = cart.Lines.FirstOrDefault()
                                            ?.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartAnyItemSubtotalPercentOffAction"));
                linePercentAdjustment.Should().NotBeNull();
                linePercentAdjustment?.Adjustment.Amount.Should().Be(-0.25M);
                var lineAmountAdjustment = cart.Lines.FirstOrDefault()
                                           ?.Adjustments.FirstOrDefault(a => a.AwardingBlock.Equals("CartAnyItemSubtotalAmountOffAction"));
                lineAmountAdjustment.Should().NotBeNull();
                lineAmountAdjustment?.Adjustment.Amount.Should().Be(-5M);
            }
        }
Ejemplo n.º 20
0
        public static void RunScenarios()
        {
            var watch = new Stopwatch();

            watch.Start();

            Console.WriteLine("Begin OrdersUX");

            try
            {
                // Run CredtCard scenarios
                var jeff = new AnonymousCustomerJeff();
                _orderId = Scenarios.Simple2PhysicalDigitalItems.Run(jeff.Context).Result;
                _orderId.Should().NotBeNull();
                HoldOrder(_orderId);

                OrderFulfillments();

                SetFulfillment_Digital();
                SetFulfillment_ShipToMe();
                SetFulfillment_Split();

                OrderPayments();
                VoidPayment_Federated();
                AddPayment_Federated(64.23M);

                UndoOnHoldOrder();

                OrderEntitlements(jeff.Context);

                OnHoldScenarios();
                // Run Federated Scenarios
                var bob = new AnonymousCustomerBob();
                _orderId = Scenarios.SimplePhysicalDigitalItemsFederatedPayment.Run(bob.Context).Result;
                _orderId.Should().NotBeNull();
                HoldOrder(_orderId);

                OrderFulfillments();

                SetFulfillment_Digital();
                SetFulfillment_ShipToMe();
                SetFulfillment_Split();

                OrderPayments();
                VoidPayment_Federated();
                AddPayment_Federated(64.23M);

                RefundPayment_Federated();

                _orderId = Scenarios.SimplePhysical2Items.Run(jeff.Context).Result;
                _orderId.Should().NotBeNull();
                HoldOrder(_orderId);

                AddPayment_GiftCard();

                UndoOnHoldOrder();
            }
            catch (Exception ex)
            {
                ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario 'OrdersUX' (${ex.Message}) : Stack={ex.StackTrace}");
            }

            watch.Stop();

            Console.WriteLine($"End PromotionsUX :{watch.ElapsedMilliseconds} ms");
        }