Exemplo n.º 1
0
        static void Main(string[] args)
        {
            try
            {
                OpsServiceUri       = Properties.Settings.Default.OpsServiceUri;
                ShopsServiceUri     = Properties.Settings.Default.ShopsServiceUri;
                MinionsServiceUri   = Properties.Settings.Default.MinionsServiceUri;
                AuthoringServiceUri = Properties.Settings.Default.AuthoringServiceUri;
                SitecoreIdServerUri = Properties.Settings.Default.SitecoreIdServerUri;

                UserName = Properties.Settings.Default.UserName;
                Password = Properties.Settings.Default.Password;

                SitecoreTokenRaw = SitecoreIdServerAuth.GetToken();
                SitecoreToken    = $"Bearer {SitecoreTokenRaw}";

                var stopwatch = new Stopwatch();
                stopwatch.Start();

                Console.ForegroundColor = ConsoleColor.Cyan;

                if (ShouldBootstrapOnLoad)
                {
                    Bootstrapping.RunScenarios();
                    Content.RunScenarios();
                }

                if (ShouldDevOpsScenarios)
                {
                    Environments.RunScenarios();

                    Plugins.RunScenarios();

                    Entities.RunScenarios();

                    Policies.RunScenarios();

                    Caching.RunScenarios();
                }

                if (ShouldRunCatalogScenarios)
                {
                    Catalogs.RunScenarios();
                    CatalogsUX.RunScenarios();

                    Categories.RunScenarios();
                    CategoriesUX.RunScenarios();

                    // TODO: contains failing tests
                    SellableItems.RunScenarios();

                    SellableItemsUX.RunScenarios();
                }

                if (ShouldRunPricingScenarios)
                {
                    Pricing.RunScenarios();
                    PricingUX.RunScenarios();
                }

                if (ShouldRunPromotionsScenarios)
                {
                    Promotions.RunScenarios();
                    PromotionsUX.RunScenarios();
                    PromotionsRuntime.RunScenarios();

                    Rules.RunScenarios();

                    Coupons.RunScenarios();
                    CouponsUX.RunScenarios();
                }

                if (ShouldRunInventoryScenarios)
                {
                    Inventory.RunScenarios();
                    InventoryUX.RunScenarios();
                }

                if (ShouldRunOrdersScenarios)
                {
                    Fulfillments.RunScenarios();

                    Payments.RunScenarios();
                    PaymentsFederated.RunScenarios();

                    Carts.RunScenarios();

                    Returns.RunScenarios();

                    OrdersUX.RunScenarios();
                    Orders.RunScenarios();

                    Shipments.RunScenarios(); // ORDERS HAVE TO BE RELEASED FOR SHIPMENTS TO GET GENERATED
                }

                if (ShouldRunCustomersScenarios)
                {
                    CustomersUX.RunScenarios();
                }

                if (ShouldRunEntitlementsScenarios)
                {
                    Entitlements.RunScenarios();
                }

                if (ShouldRunSearchScenarios)
                {
                    Search.RunScenarios();
                }

                if (ShouldRunBusinessUsersScenarios)
                {
                    ComposerUX.RunScenarios();
                    // Composer.RunScenarios();
                }

                if (ShouldRunVersionScenarios)
                {
                    Versions.RunScenarios();
                }

                stopwatch.Stop();

                Console.WriteLine($"Test Runs Complete - {stopwatch.ElapsedMilliseconds} ms -  (Hit any key to continue)");

                if (DemoStops)
                {
                    Console.ReadKey();
                }
            }
            catch (Exception ex)
            {
                ConsoleExtensions.WriteErrorLine("An unexpected exception occurred.");
                ConsoleExtensions.WriteErrorLine(ex.ToString());
            }

            Console.WriteLine("done.");
        }
        private static string AddPromotion(string name, DateTimeOffset? validFrom = null, DateTimeOffset? validTo = null)
        {
            System.Console.WriteLine("Begin AddPromotionUX");

            var view = Proxy.GetValue(AuthoringContainer.GetEntityView(_bookId, "Details", "AddPromotion", string.Empty));
            view.Should().NotBeNull();
            view.Policies.Should().BeEmpty();
            view.Properties.Should().NotBeEmpty();
            view.ChildViews.Should().BeEmpty();

            var version = view.Properties.FirstOrDefault(p => p.Name.Equals("Version"));

            var fromDate = validFrom ?? DateTimeOffset.Now;
            var toDate = validTo ?? DateTimeOffset.Now.AddDays(30);
            view.Properties = new ObservableCollection<ViewProperty>
            {
                new ViewProperty
                {
                    Name = "Name",
                    Value = name
                },
                new ViewProperty
                {
                    Name = "Description",
                    Value = "promotion's description"
                },
                new ViewProperty
                {
                    Name = "DisplayName",
                    Value = "promotion's display name"
                },
                new ViewProperty
                {
                    Name = "DisplayText",
                    Value = "promotion's text"
                },
                new ViewProperty
                {
                    Name = "DisplayCartText",
                    Value = "promotion's cart text"
                },
                new ViewProperty
                {
                    Name = "ValidFrom",
                    Value = fromDate.ToString(CultureInfo.InvariantCulture)
                },
                new ViewProperty
                {
                    Name = "ValidTo",
                    Value = toDate.ToString(CultureInfo.InvariantCulture)
                },
                new ViewProperty
                {
                    Name = "IsExclusive",
                    Value = "true"
                },
                version
            };
            var result = Proxy.DoCommand(AuthoringContainer.DoAction(view));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();
            result.Models.OfType<PromotionAdded>().FirstOrDefault().Should().NotBeNull();
            var promotionFriendlyId = result.Models.OfType<PromotionAdded>().FirstOrDefault()?.PromotionFriendlyId;

            var promotion = Promotions.GetPromotion(promotionFriendlyId);
            promotion.Should().NotBeNull();
            promotion.ValidFrom.Should().BeCloseTo(fromDate, 1000);
            promotion.ValidTo.Should().BeCloseTo(toDate, 1000);

            return promotionFriendlyId;
        }
        private static void EditPromotion(string promotionId, string promotionFriendlyId)
        {
            System.Console.WriteLine("Begin EditPromotionUX");

            var view = Proxy.GetValue(AuthoringContainer.GetEntityView(promotionId, "Details", "EditPromotion", string.Empty));
            view.Should().NotBeNull();
            view.Policies.Should().BeEmpty();
            view.Properties.Should().NotBeEmpty();
            view.ChildViews.Should().BeEmpty();

            var version = view.Properties.FirstOrDefault(p => p.Name.Equals("Version"));

            var fromDate = DateTimeOffset.Now.AddDays(60);
            var toDate = DateTimeOffset.Now.AddDays(90);
            view.Properties = new ObservableCollection<ViewProperty>
            {
                new ViewProperty
                {
                    Name = "ValidFrom",
                    Value = fromDate.ToString(CultureInfo.InvariantCulture)
                },
                new ViewProperty
                {
                    Name = "ValidTo",
                    Value = toDate.ToString(CultureInfo.InvariantCulture)
                },
                new ViewProperty
                {
                    Name = "DisplayText",
                    Value = "edited text"
                },
                new ViewProperty
                {
                    Name = "DisplayCartText",
                    Value = "edited cart text"
                },
                new ViewProperty
                {
                    Name = "Description",
                    Value = "edited description"
                },
                new ViewProperty
                {
                    Name = "DisplayName",
                    Value = "edited display name"
                },
                new ViewProperty
                {
                    Name = "IsExclusive",
                    Value = "false"
                },
                version
            };
            var result = Proxy.DoCommand(AuthoringContainer.DoAction(view));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();

            var promotion = Promotions.GetPromotion(promotionFriendlyId);
            promotion.Should().NotBeNull();
            promotion.ValidFrom.Should().BeCloseTo(fromDate, 1000);
            promotion.ValidTo.Should().BeCloseTo(toDate, 1000);
        }
Exemplo n.º 4
0
        private static void SetPromotionApprovalStatus()
        {
            Console.WriteLine("Begin SetPromotionApprovalStatusUX");

            // ADD PROMOTION TO BE APPROVE
            var promotionFriendlyId = AddPromotion("consoleuxpromotionapproved", DateTimeOffset.Now.AddDays(3), DateTimeOffset.Now.AddDays(30));

            promotionFriendlyId.Should().NotBeNullOrEmpty();
            var promotionId = $"Entity-Promotion-{promotionFriendlyId}";

            AddQualification(promotionId);
            AddBenefit(promotionId);

            ApprovePromotion(promotionId, promotionFriendlyId);

            // RETRACT
            var view = Proxy.GetValue(AuthoringContainer.GetEntityView(promotionId, "SetPromotionApprovalStatus", "RetractPromotion", string.Empty));

            view.Should().NotBeNull();
            view.Policies.Should().BeEmpty();
            view.Properties.Should().NotBeEmpty();
            view.ChildViews.Should().BeEmpty();
            view.Properties.FirstOrDefault(p => p.Name.Equals("Comment")).Value = "retract comment";

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

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

            var promotion = Promotions.GetPromotion(promotionFriendlyId);

            promotion.Components.OfType <ApprovalComponent>().FirstOrDefault()?.Status.Should().Be("Draft");

            // DISABLE
            //// ADD PROMOTION TO BE DISABLE
            promotionFriendlyId = AddPromotion("consoleuxpromotiondisabled", DateTimeOffset.Now.AddDays(-3), DateTimeOffset.Now.AddDays(30));
            promotionFriendlyId.Should().NotBeNullOrEmpty();
            promotionId = $"Entity-Promotion-{promotionFriendlyId}";
            AddQualification(promotionId);
            AddBenefit(promotionId);

            ApprovePromotion(promotionId, promotionFriendlyId);

            view = Proxy.GetValue(AuthoringContainer.GetEntityView(promotionId, "SetPromotionApprovalStatus", "DisablePromotion", string.Empty));
            view.Should().NotBeNull();
            view.Policies.Should().BeEmpty();
            view.Properties.Should().NotBeEmpty();
            view.ChildViews.Should().BeEmpty();
            view.Properties.FirstOrDefault(p => p.Name.Equals("Comment")).Value = "disable comment";

            result = Proxy.DoCommand(AuthoringContainer.DoAction(view));
            result.Messages.Any(m => m.Code.Equals("error", StringComparison.OrdinalIgnoreCase)).Should().BeFalse();
            result.Messages.Any(m => m.Code.Equals("information", StringComparison.OrdinalIgnoreCase)).Should().BeTrue();

            promotion = Promotions.GetPromotion(promotionFriendlyId);
            promotion.Components.OfType <ApprovalComponent>().FirstOrDefault()?.Status.Should().Be("Approved");
            promotion.Policies.OfType <DisabledPolicy>().FirstOrDefault().Should().NotBeNull();

            var detailsView = Proxy.GetValue(AuthoringContainer.GetEntityView(promotionId, "Details", string.Empty, string.Empty));

            detailsView.Should().NotBeNull();
            detailsView.Policies.Should().NotBeEmpty();
            detailsView.Policies.OfType <ActionsPolicy>().FirstOrDefault().Should().NotBeNull();
            detailsView.Policies.OfType <ActionsPolicy>().FirstOrDefault()?.Actions.FirstOrDefault(a => a.Name.Equals("DisablePromotion")).Should().NotBeNull();
            detailsView.Policies.OfType <ActionsPolicy>().FirstOrDefault()?.Actions.FirstOrDefault(a => a.Name.Equals("DisablePromotion"))?.IsEnabled.Should().BeFalse();
        }