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(); }
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"); }
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; }