private static void SetPromotionApprovalStatus()
        {
            System.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();
        }
Esempio n. 2
0
        private static void ApprovePromotion(string promotionId, string promotionFriendlyId)
        {
            // REQUEST APPROVAL
            var view = Proxy.GetValue(ShopsContainer.GetEntityView(promotionId, "SetPromotionApprovalStatus", "RequestPromotionApproval", 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 = "request approval comment";

            var result = Proxy.DoCommand(ShopsContainer.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("ReadyForApproval");

            // REJECT
            view = Proxy.GetValue(ShopsContainer.GetEntityView(promotionId, "SetPromotionApprovalStatus", "RejectPromotion", 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 = "reject comment";

            result = Proxy.DoCommand(ShopsContainer.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("Draft");

            //// REQUESTING APPROVAL AGAIN AFTER REJECTING THE PROMOTION
            view = Proxy.GetValue(ShopsContainer.GetEntityView(promotionId, "SetPromotionApprovalStatus", "RequestPromotionApproval", string.Empty));
            view.Properties.FirstOrDefault(p => p.Name.Equals("Comment")).Value = "request approval second time comment";
            result = Proxy.DoCommand(ShopsContainer.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("ReadyForApproval");

            // APPROVE
            view = Proxy.GetValue(ShopsContainer.GetEntityView(promotionId, "SetPromotionApprovalStatus", "ApprovePromotion", 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 = "approve comment";

            result = Proxy.DoCommand(ShopsContainer.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");
        }
Esempio n. 3
0
        private static void EditPromotion(string promotionId, string promotionFriendlyId)
        {
            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);
        }
        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;
        }