public async Task ExecuteCampaignActionAsync(string campaignId, CampaignAction campaignAction)
        {
            var member = typeof(CampaignAction).GetRuntimeProperties().FirstOrDefault(x => x.Name == (campaignAction.ToString()));
            var action =
                member.GetCustomAttributes(typeof(DescriptionAttribute), false)
                .OfType <DescriptionAttribute>()
                .FirstOrDefault()?.Description ?? campaignAction.ToString().ToLower();

            using (var client = CreateMailClient("campaigns/"))
            {
                var response = await client.PostAsync($"{campaignId}/actions/${action}", null).ConfigureAwait(false);

                await response.EnsureSuccessMailChimpAsync().ConfigureAwait(false);
            }
        }
Example #2
0
        public void VerifyBuyXPayYActionCampaign()
        {
            // The BuyXPayYAction uses IOrderTotalCalculator.CalculateOrderRowTotal which is a bad method as it has
            // no access to the OrderCarrier, and therefor doesn't know which currency is being used.

            var order = new OrderCarrier
            {
                CurrencyID = currencySystemId,
                OrderRows  = new List <OrderRowCarrier>
                {
                    new OrderRowCarrier
                    {
                        Quantity       = 3,
                        TotalPrice     = 5.01m,
                        TotalVATAmount = 0.96m,
                        UnitListPrice  = 1.67226891m,
                        VATPercentage  = 0.1900m
                    }
                }
            };

            var filteredOrderRow = new FilteredOrderRow();

            filteredOrderRow.SetInternalProperty(r => r.OrderRowCarrier, order.OrderRows.First());

            var args = new ActionArgs();

            args.SetInternalProperty(r => r.OrderCarrier, order);
            args.SetInternalProperty(r => r.FilteredOrderRows, new List <FilteredOrderRow> {
                filteredOrderRow
            });

            var campaignData = new BuyXPayYAction.Data
            {
                BuyQuantity = 3,
                PayQuantity = 2
            };

            var sut = new CampaignAction(campaignData);

            sut.PublicProcess(args);

            CalculateOrder(order);

            Assert.Equal(1.67m, order.TotalDiscount);
            Assert.Equal(1.99m, order.TotalDiscountWithVAT);
        }
Example #3
0
        public async Task ExecuteCampaignActionAsync(string campaignId, CampaignAction campaignAction)
        {

            var member = typeof(CampaignAction).GetMember(campaignAction.ToString());
            var action =
                member.FirstOrDefault()?
                      .GetCustomAttributes(typeof(DescriptionAttribute), false)
                      .OfType<DescriptionAttribute>()
                      .FirstOrDefault()?.Description ?? campaignAction.ToString().ToLower();

            using (var client = this.CreateMailClient("campaigns/"))
            {
                var response = await client.PostAsync($"{campaignId}/actions/${action}", null).ConfigureAwait(false);
                await response.EnsureSuccessMailChimpAsync().ConfigureAwait(false);
            }
        }