private static void OrderEntitlements(ShopperContext context) { Console.WriteLine("Begin OrderEntitlements View"); var orderId = Scenarios.Simple2PhysicalDigitalItems.Run(context).Result; orderId.Should().NotBeNull(); Orders.RunPendingOrdersMinion(context); Orders.RunSettleSalesActivitiesMinion(context); Orders.RunReleasedOrdersMinion(context); var result = Proxy.GetValue(ShopsContainer.GetEntityView(orderId, "OrderEntitlements", string.Empty, string.Empty)); result.Should().NotBeNull(); result.Policies.Should().NotBeEmpty(); result.Properties.Should().NotBeEmpty(); result.ChildViews.Should().NotBeEmpty(); foreach (var childView in result.ChildViews.Cast <EntityView>()) { childView.Should().NotBeNull(); childView.Policies.Should().BeEmpty(); childView.Properties.Should().NotBeEmpty(); childView.Properties.All(p => !string.IsNullOrEmpty(p.Value)).Should().BeTrue(); childView.ChildViews.Should().BeEmpty(); } }
public static string Run(ShopperContext context) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); // Add Cart Line with Variant var commandResult = Proxy.DoCommand( container.AddCartLine(cartId, "Adventure Works Catalog|AW098 04|5", 1)); var cartLineId = commandResult.Models.OfType <LineAdded>().FirstOrDefault()?.LineId; // Add Cart Line without Variant Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1)); // Add a valid coupon Proxy.DoCommand(container.AddCouponToCart(cartId, "SingleUseCouponCode")); Proxy.DoCommand(container.UpdateCartLine(cartId, cartLineId, 10)); commandResult = Proxy.DoCommand( container.SetCartFulfillment( cartId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var totals = commandResult.Models.OfType <Totals>().First(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount); Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Totals.GrandTotal.Amount.Should().Be(1219.90M); cartId = Guid.NewGuid().ToString("B"); // Add Cart Line with Variant Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW098 04|5", 1)); // Add Cart Line without Variant Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1)); // Add a valid coupon commandResult = Proxy.DoCommand(container.AddCouponToCart(cartId, "SingleUseCouponCode")); commandResult.ResponseCode.Should() .NotBe( "Ok", "Expecting failure as this coupon code is single use only and has been used prior"); ConsoleExtensions.WriteExpectedError(); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
public static Task <string> Run(ShopperContext context) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW188 06|20", 1)); Proxy.DoCommand(container.SetCartFulfillment(cartId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var giftCardToUse = context.GiftCards.First(); var commandResult = Proxy.DoCommand( container.AddGiftCardPayment( cartId, new GiftCardPaymentComponent { PaymentMethod = new EntityReference { EntityTarget = "B5E5464E-C851-4C3C-8086-A4A874DD2DB0", Name = "GiftCard" }, GiftCardCode = giftCardToUse, Amount = Money.CreateMoney(50), })); var totals = commandResult.Models.OfType <Totals>().First(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount - totals.PaymentsTotal.Amount); commandResult = Proxy.DoCommand( container.AddFederatedPayment( cartId, paymentComponent)); totals = commandResult.Models.OfType <Totals>().First(); totals.PaymentsTotal.Amount.Should().Be(totals.GrandTotal.Amount); var order = Orders.CreateAndValidateOrder(container, cartId, context); watch.Stop(); order.Totals.GrandTotal.Amount.Should().Be(119.50M); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public static string AddCustomer(string userName = "", ShopperContext context = null) { using (new SampleMethodScope()) { var container = context != null?context.ShopsContainer() : ShopsContainer; var view = Proxy.GetValue( ShopsContainer.GetEntityView(string.Empty, "Details", "AddCustomer", string.Empty)); view.Should().NotBeNull(); view.Properties.Should().NotBeEmpty(); view.Action.Should().Be("AddCustomer"); view.Properties.Should().NotBeEmpty(); var customerName = string.IsNullOrEmpty(userName) ? _customerUserName : userName; view.Properties.FirstOrDefault(p => p.Name.Equals("Domain")).Value = customerName.Split('\\')[0]; view.Properties.FirstOrDefault(p => p.Name.Equals("LoginName")).Value = customerName.Split('\\')[1]; view.Properties.FirstOrDefault(p => p.Name.Equals("Email")).Value = GenerateRandomEmail(); var action = Proxy.DoCommand(container.DoAction(view)); action.Messages.Any(m => m.Code.Equals("validationerror", StringComparison.OrdinalIgnoreCase)).Should().BeTrue(); ConsoleExtensions.WriteExpectedError(); view.Properties.FirstOrDefault(p => p.Name.Equals("AccountStatus")).Value = "ActiveAccount"; action = Proxy.DoCommand(container.DoAction(view)); action.Messages.Should().NotContainErrors(); action.Models.OfType <Sitecore.Commerce.Core.PersistedEntityModel>().FirstOrDefault().Should().NotBeNull(); _customerId = action.Models.OfType <Sitecore.Commerce.Core.PersistedEntityModel>().FirstOrDefault()?.EntityId; return(_customerId); } }
public static void RunPendingOrdersMinion(ShopperContext context) { EngineExtensions.RunMinionWithRetry( "Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionBoss, Sitecore.Commerce.Plugin.Orders", ResolveMinionEnvironment(context), true); }
private static void OrderEntitlements(ShopperContext context) { using (new SampleMethodScope()) { var orderId = Simple2PhysicalDigitalItems.Run(context); orderId.Should().NotBeNull(); Orders.RunPendingOrdersMinion(context); Orders.RunReleasedOrdersMinion(context); var result = Proxy.GetValue( ShopsContainer.GetEntityView(orderId, "OrderEntitlements", string.Empty, string.Empty)); result.Should().NotBeNull(); result.Policies.Should().NotBeEmpty(); result.Properties.Should().NotBeEmpty(); result.ChildViews.Should().NotBeEmpty(); foreach (var childView in result.ChildViews.Cast <EntityView>()) { childView.Should().NotBeNull(); childView.Policies.Should().BeEmpty(); childView.Properties.Should().NotBeEmpty(); childView.Properties.All(p => !string.IsNullOrEmpty(p.Value)).Should().BeTrue(); childView.ChildViews.Should().BeEmpty(); } } }
public static Task <string> Run(ShopperContext context, decimal quantity) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|7042259|57042259", quantity)); var result = Proxy.DoCommand( container.SetCartFulfillment( cartId, new ElectronicFulfillmentComponent { FulfillmentMethod = new EntityReference { EntityTarget = "8A23234F-8163-4609-BD32-32D9DD6E32F5", Name = "Email" }, EmailAddress = "*****@*****.**", EmailContent = "this is the content of the email" })); var totals = result.Models.OfType <Sitecore.Commerce.Plugin.Carts.Totals>().FirstOrDefault(); totals.Should().NotBeNull(); totals?.GrandTotal.Should().NotBeNull(); totals?.GrandTotal.Amount.Should().NotBe(0); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount); result = Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); totals = result.Models.OfType <Sitecore.Commerce.Plugin.Carts.Totals>().FirstOrDefault(); totals.Should().NotBeNull(); totals?.GrandTotal.Should().NotBeNull(); totals?.GrandTotal.Amount.Should().NotBe(0); totals?.PaymentsTotal.Should().NotBeNull(); totals?.PaymentsTotal.Amount.Should().NotBe(0); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(totals.GrandTotal.Amount); watch.Stop(); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public static void RunSettleSalesActivitiesMinion(ShopperContext context) { Console.WriteLine("Begin RunSettleSalesActivitiesMinion"); var policies = new Collection <CommerceOps.Sitecore.Commerce.Core.Policy> { new CommerceOps.Sitecore.Commerce.Core.RunMinionPolicy { RunChildren = false } }; var result = Proxy.GetValue( new MinionRunner().Context.MinionsContainer() .RunMinion("Sitecore.Commerce.Plugin.Orders.SettleSalesActivitiesMinion, Sitecore.Commerce.Plugin.Orders", ResolveMinionEnvironment(context), policies)); if (result.ResponseCode.Equals("Error", StringComparison.OrdinalIgnoreCase)) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"RunSettleSalesActivitiesMinion: {result.Messages.FirstOrDefault(m => m.Code.Equals("Error", StringComparison.Ordinal))?.Text}"); } result = Proxy.GetValue( new MinionRunner().Context.MinionsContainer() .RunMinion("Sitecore.Commerce.Plugin.Orders.SettleSalesActivitiesMinion, Sitecore.Commerce.Plugin.Orders", "HabitatMinions", policies)); if (result.ResponseCode.Equals("Error", StringComparison.OrdinalIgnoreCase)) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"RunSettleSalesActivitiesMinion: {result.Messages.FirstOrDefault(m => m.Code.Equals("Error", StringComparison.Ordinal))?.Text}"); } }
public static void RunScenarios() { using (new SampleScenarioScope("Returns")) { var steve = new AnonymousCustomerSteve(); _context = steve.Context; var order = CreateCompletedOrder(); var lineId = order.Lines.FirstOrDefault()?.Id; RequestRmaLineValidation(order.Id, "invalidlineid", 1); // invalid line id RequestRmaLineValidation(order.Id, lineId, -1); // returning -1 out of 1 available RequestRmaLineValidation(order.Id, lineId, 0); // returning 0 out of 1 available var rmaFriendlyId = RequestRma(order.Id, lineId, 1); RequestRmaLineValidation(order.Id, lineId, 3); // returning 3 out of 2 available ReturnedItemReceivedValidation("invalidrmaid"); // invalid rma id ReturnedItemReceived(_context.ShopsContainer(), rmaFriendlyId, order.Id, lineId); ReturnedItemReceivedValidation(rmaFriendlyId); // rma invalid status RunRefundRmasMinion(_context.ShopsContainer(), $"Entity-ReturnMerchandiseAuthorization-{rmaFriendlyId}", EnvironmentConstants.HabitatMinions); rmaFriendlyId = RequestRma(order.Id, lineId, 2); RequestRmaLineValidation(order.Id, order.Lines.FirstOrDefault()?.Id, 1); // returning 1 out of 0 available ReturnedItemReceived(_context.ShopsContainer(), rmaFriendlyId, order.Id, lineId); RequestDigitalRma(); } }
public static string Run(ShopperContext context) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW098 04|5", 1)); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1)); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1)); var updatedCart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines")); var cartLineComponent = updatedCart.Lines.FirstOrDefault(l => l.ItemId.Equals("Adventure Works Catalog|AW475 14|")); if (cartLineComponent != null) { Proxy.DoCommand(container.RemoveCartLine(cartId, cartLineComponent.Id)); } var commandResponse = Proxy.DoCommand( container.SetCartFulfillment( cartId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var totals = commandResponse.Models.OfType <Totals>().First(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount); commandResponse = Proxy.DoCommand( container.AddFederatedPayment( cartId, paymentComponent)); totals = commandResponse.Models.OfType <Totals>().First(); totals.PaymentsTotal.Amount.Should().Be(totals.GrandTotal.Amount); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Totals.GrandTotal.Amount.Should().Be(115.50M); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine( ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
public static string Run(ShopperContext context) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); // Add Cart Line with Variant Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW098 04|5", 1)); // Add Cart Line without Variant Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1)); Proxy.DoCommand(container.AddCouponToCart(cartId, "RTRNC15P")); var commandResult = Proxy.DoCommand( container.SetCartFulfillment( cartId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var totals = commandResult.Models.OfType <Totals>().First(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount); commandResult = Proxy.DoCommand( container.AddFederatedPayment( cartId, paymentComponent)); totals = commandResult.Models.OfType <Totals>().First(); totals.Should().NotBeNull(); var order = Orders.CreateAndValidateOrder(container, cartId, context); var orderSummary = Proxy.GetValue( container.GetEntityView(order.Id, "Master", string.Empty, string.Empty)); // Show that the coupon used is part of the view when a business user looks at an order orderSummary.ChildViews.OfType <EntityView>() .First(p => p.Name == "Summary") .Properties.FirstOrDefault(p => p.Name == "CouponUsed") .Should() .NotBeNull(); order.Totals.GrandTotal.Amount.Should().Be(155.80M); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine( ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
public static string Run(ShopperContext context, decimal quantity) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); //// subscription Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042453|56042453", quantity)); //// gift card Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042986|56042988", quantity)); //// warranty Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|7042259|57042259", quantity)); //// installation Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042558|56042558", quantity)); Proxy.DoCommand( container.SetCartFulfillment( cartId, new ElectronicFulfillmentComponent { Id = Guid.NewGuid().ToString(), FulfillmentMethod = new EntityReference { EntityTarget = "8A23234F-8163-4609-BD32-32D9DD6E32F5", Name = "Email" }, EmailAddress = "*****@*****.**", EmailContent = "this is the content of the email" })); var cart = Carts.GetCart(cartId, context); cart.Should().NotBeNull(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(cart.Totals.GrandTotal.Amount); Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(cart.Totals.GrandTotal.Amount); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine( ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
public static Cart GetCart(string cartId, ShopperContext context = null) { var container = context != null?context.ShopsContainer() : ShopsContainer; var cart = Proxy.GetValue(container.Carts.ByKey(cartId).Expand("Lines($expand=CartLineComponents),Components")); return(cart); }
public static string Run(ShopperContext context) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); var commandResponse = Proxy.DoCommand( container.AddCartLine(cartId, "Adventure Works Catalog|22565422120|100", 1)); var firstLineId = commandResponse.Models.OfType <LineAdded>().FirstOrDefault()?.LineId; commandResponse = Proxy.DoCommand( container.AddCartLine(cartId, "Adventure Works Catalog|AW188 06|19", 1)); var secondLineId = commandResponse.Models.OfType <LineAdded>().FirstOrDefault()?.LineId; Proxy.DoCommand( container.SetCartLineFulfillment( cartId, firstLineId, context.Components.OfType <ElectronicFulfillmentComponent>().First())); commandResponse = Proxy.DoCommand( container.SetCartLineFulfillment( cartId, secondLineId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var totals = commandResponse.Models.OfType <Totals>().First(); totals.AdjustmentsTotal.Amount.Should().Be(0M); totals.GrandTotal.Amount.Should().Be(229M); // Add a Payment var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount - totals.PaymentsTotal.Amount); commandResponse = Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); totals = commandResponse.Models.OfType <Totals>().First(); totals.PaymentsTotal.Amount.Should().Be(229M); // Get the cart one last time before creating the order var cart = Carts.GetCart(cartId, context); cart.Version.Should().Be(5); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(229M); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine( ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
public static Task <string> Run(ShopperContext context) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW188 06|19", 1)); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW188 06|20", 1)); // Add Cart Level Physical Fulfillment var commandResponse = Proxy.DoCommand( container.SetCartFulfillment( cartId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var totals = commandResponse.Models.OfType <Totals>().First(); totals.AdjustmentsTotal.Amount.Should().Be(19M); totals.GrandTotal.Amount.Should().Be(209M); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount - totals.PaymentsTotal.Amount); // Add a Payment commandResponse = Proxy.DoCommand( container.AddFederatedPayment(cartId, paymentComponent)); totals = commandResponse.Models.OfType <Totals>().First(); totals.PaymentsTotal.Amount.Should().Be(209M); // Get the cart one last time before creating the order var cart = Carts.GetCart(cartId, context); cart.Version.Should().Be(4); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(209M); watch.Stop(); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public static Task <string> Run(ShopperContext context) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); // First retrieve GiftCard as a SellableItem Proxy.GetValue(container.SellableItems.ByKey("Adventure Works Catalog,22565422120,100").Expand("Components($expand=ChildComponents($expand=ChildComponents))")); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|22565422120|100", 1)); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|22565422120|050", 1)); Proxy.DoCommand( container.SetCartFulfillment( cartId, new ElectronicFulfillmentComponent { FulfillmentMethod = new EntityReference { EntityTarget = "8A23234F-8163-4609-BD32-32D9DD6E32F5", Name = "Email" }, EmailAddress = "*****@*****.**", EmailContent = "this is the content of the email" })); // Add a Payment var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(150); Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(150.00000M); Proxy.GetEntityView(container, order.Id, "Master", string.Empty, string.Empty); watch.Stop(); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public static Task <string> Run(ShopperContext context) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); //Habitat NextCube-V Game Cube 1TB var gameSystemLine = Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042432|56042432", 1)); //Habitat NextCube Now 6 month On-Demand Multigame Subscription var subscriptionLine = Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042456|56042456", 1)); var gameSystemLineFulfillmentResponse = Proxy.DoCommand(container.SetCartLineFulfillment(cartId, gameSystemLine.Models.OfType <LineAdded>().FirstOrDefault().LineId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); Proxy.DoCommand( container.SetCartLineFulfillment( cartId, subscriptionLine.Models.OfType <LineAdded>().FirstOrDefault().LineId, context.Components.OfType <ElectronicFulfillmentComponent>().First() ) ); var cart = Carts.GetCart(cartId, context); cart.Should().NotBeNull(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = cart.Totals.GrandTotal; Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(cart.Totals.GrandTotal.Amount); watch.Stop(); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public static string Run(ShopperContext context) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); // Add Cart Line with Variant var commandResult = Proxy.DoCommand( container.AddCartLine(cartId, "Adventure Works Catalog|AW098 04|5", 1)); var cartLineId1 = commandResult.Models.OfType <LineAdded>().FirstOrDefault()?.LineId; // Add Cart Line without Variant commandResult = Proxy.DoCommand( container.AddCartLine(cartId, "Adventure Works Catalog|AW475 14|", 1)); var cartLineId2 = commandResult.Models.OfType <LineAdded>().FirstOrDefault()?.LineId; commandResult = Proxy.DoCommand( container.SetCartLineFulfillment( cartId, cartLineId1, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var totals = commandResult.Models.OfType <Totals>().First(); commandResult = Proxy.DoCommand( container.SetCartLineFulfillment( cartId, cartLineId2, context.Components.OfType <PhysicalFulfillmentComponent>().First())); totals = commandResult.Models.OfType <Totals>().First(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount - totals.PaymentsTotal.Amount); Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Totals.GrandTotal.Amount.Should().Be(180.40M); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine( ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
private static void BuyWarranty(ShopperContext context) { var orderId = Scenarios.BuyWarranty.Run(context, 1).Result; orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 1, typeof(Warranty)); }
private static void BuyOneOfEach(ShopperContext context) { var orderId = Scenarios.BuyAllDigitals.Run(context, 1).Result; orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 4); }
private static void BuySubscription(ShopperContext context) { var orderId = Scenarios.BuySubscription.Run(context, 1).Result; orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 1, typeof(DigitalProduct)); }
private static void BuyGiftCard(ShopperContext context) { var orderId = Scenarios.BuyGiftCard.Run(context, 2).Result; orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 2, typeof(GiftCard)); }
private static void BuyPhysicalAndGiftCard(ShopperContext context) { var orderId = Scenarios.Simple2PhysicalDigitalItems.Run(context).Result; orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 1, typeof(GiftCard)); }
public static void RunPendingOrdersMinion(ShopperContext context) { Console.WriteLine("Begin RunPendingOrdersMinion"); var result = Proxy.GetValue(new MinionRunner().Context.MinionsContainer() .RunMinion("Sitecore.Commerce.Plugin.Orders.PendingOrdersMinionBoss, Sitecore.Commerce.Plugin.Orders", ResolveMinionEnvironment(context), null)); if (result.ResponseCode.Equals("Error", StringComparison.OrdinalIgnoreCase)) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"RunPendingOrdersMinion: {result.Messages.FirstOrDefault(m => m.Code.Equals("Error", StringComparison.Ordinal))?.Text}"); } }
public static string Run(ShopperContext context) { using (new SampleBuyScenarioScope()) { try { var container = context.ShopsContainer(); var cartId = Carts.GenerateCartId(); //Habitat NextCube-V Game Cube 1TB var gameSystemLine = Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042432|56042432", 1)); //Habitat NextCube Now 6 month On-Demand multi game Subscription var subscriptionLine = Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042456|56042456", 1)); Proxy.DoCommand( container.SetCartLineFulfillment( cartId, gameSystemLine.Models.OfType <LineAdded>().FirstOrDefault().LineId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); Proxy.DoCommand( container.SetCartLineFulfillment( cartId, subscriptionLine.Models.OfType <LineAdded>().FirstOrDefault().LineId, context.Components.OfType <ElectronicFulfillmentComponent>().First())); var cart = Carts.GetCart(cartId, context); cart.Should().NotBeNull(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = cart.Totals.GrandTotal; Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(cart.Totals.GrandTotal.Amount); return(order.Id); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine( ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } } }
public static Task <string> Run(ShopperContext context) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); //Request the SellableItem Proxy.GetValue(container.SellableItems.ByKey("Adventure Works Catalog,AW210 12,4").Expand("Components($expand=ChildComponents($expand=ChildComponents($expand=ChildComponents)))")); Proxy.DoCommand(container.AddCartLine(cartId, "Adventure Works Catalog|AW210 12|4", 1)); var commandResult = Proxy.DoCommand( container.SetCartFulfillment(cartId, context.Components.OfType <PhysicalFulfillmentComponent>().First()) ); var totals = commandResult.Models.OfType <Totals>().First(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = Money.CreateMoney(totals.GrandTotal.Amount); commandResult = Proxy.DoCommand( container.AddFederatedPayment(cartId, paymentComponent) ); totals = commandResult.Models.OfType <Totals>().First(); totals.PaymentsTotal.Amount.Should().Be(totals.GrandTotal.Amount); var order = Orders.CreateAndValidateOrder(container, cartId, context); watch.Stop(); order.Totals.GrandTotal.Amount.Should().Be(233.20M); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public static Task <string> Run(ShopperContext context) { var watch = new Stopwatch(); watch.Start(); try { var container = context.ShopsContainer(); Console.WriteLine($"Begin {ScenarioName}"); var cartId = Guid.NewGuid().ToString("B"); // Habitat Republic 32GB 4G LTE var phoneLine = Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042323|56042324", 1)); // Habitat Shark Waterproof Smartphone Case var caseLine = Proxy.DoCommand(container.AddCartLine(cartId, "Habitat_Master|6042360|56042360", 1)); Proxy.DoCommand(container.SetCartLineFulfillment( cartId, phoneLine.Models.OfType <LineAdded>().FirstOrDefault().LineId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); Proxy.DoCommand(container.SetCartLineFulfillment( cartId, caseLine.Models.OfType <LineAdded>().FirstOrDefault().LineId, context.Components.OfType <PhysicalFulfillmentComponent>().First())); var cart = Carts.GetCart(cartId, context); cart.Should().NotBeNull(); var paymentComponent = context.Components.OfType <FederatedPaymentComponent>().First(); paymentComponent.Amount = cart.Totals.GrandTotal; Proxy.DoCommand(container.AddFederatedPayment(cartId, paymentComponent)); var order = Orders.CreateAndValidateOrder(container, cartId, context); order.Status.Should().NotBe("Problem"); order.Totals.GrandTotal.Amount.Should().Be(cart.Totals.GrandTotal.Amount); watch.Stop(); Console.WriteLine($"End {ScenarioName} (${order.Totals.GrandTotal.Amount}):{watch.ElapsedMilliseconds} ms"); return(Task.FromResult(order.Id)); } catch (Exception ex) { ConsoleExtensions.WriteColoredLine(ConsoleColor.Red, $"Exception in Scenario {ScenarioName} (${ex.Message}) : Stack={ex.StackTrace}"); return(null); } }
public MinionRunner() { Context = new ShopperContext { Shop = Program.DefaultStorefront, ShopperId = "MinionRunnerShopperId", Language = "en-US", Currency = "USD", PolicyKeys = "ZeroMinionDelay|xActivityPerf", EffectiveDate = DateTimeOffset.Now, Components = new List <Component>() }; }
private static void BuyGiftCards(ShopperContext context) { using (new SampleMethodScope()) { var orderId = Scenarios.BuyGiftCards.Run(context); orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 2, typeof(GiftCard)); } }
private static void BuyPhysicalAndGiftCard(ShopperContext context) { using (new SampleMethodScope()) { var orderId = Simple2PhysicalDigitalItems.Run(context); orderId.Should().NotBeNull(); RunMinions(context); var order = ValidateOrder(context, orderId); ValidateEntitlements(context, order, null, 1, typeof(GiftCard)); } }