Exemple #1
0
        public void UpdateCartDiscountByIdChangeName()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            string name = this.cartDiscountFixture.RandomString(10);
            List <UpdateAction <CartDiscount> > updateActions = new List <UpdateAction <CartDiscount> >();
            ChangeNameUpdateAction changeNameUpdateAction     = new ChangeNameUpdateAction()
            {
                Name = new LocalizedString()
                {
                    { "en", name }
                }
            };

            updateActions.Add(changeNameUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id), cartDiscount.Version,
                                                                                                    updateActions))
                                                 .Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);
            Assert.Equal(name, retrievedCartDiscount.Name["en"]);
        }
Exemple #2
0
        public CartDiscount CreateCartDiscount(CartDiscountDraft cartDiscountDraft)
        {
            IClient      commerceToolsClient = this.GetService <IClient>();
            CartDiscount cartDiscount        = commerceToolsClient.ExecuteAsync(new CreateCommand <CartDiscount>(cartDiscountDraft)).Result;

            return(cartDiscount);
        }
Exemple #3
0
        public void UpdateCartDiscountByIdSetDescription()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            string newDescription = this.cartDiscountFixture.RandomString(20);
            List <UpdateAction <CartDiscount> > updateActions = new List <UpdateAction <CartDiscount> >();
            SetDescriptionUpdateAction          setDescriptionUpdateAction = new SetDescriptionUpdateAction()
            {
                Description = new LocalizedString()
                {
                    { "en", newDescription }
                }
            };

            updateActions.Add(setDescriptionUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id), cartDiscount.Version,
                                                                                                    updateActions))
                                                 .Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);
            Assert.Equal(newDescription, retrievedCartDiscount.Description["en"]);
        }
Exemple #4
0
        public DiscountCodeDraft GetDiscountCodeDraft()
        {
            DiscountCodeDraft discountCodeDraft = new DiscountCodeDraft()
            {
                Code = this.RandomString(15),
                Name = new LocalizedString()
                {
                    { "en", this.RandomString(10) }
                },
                Description = new LocalizedString()
                {
                    { "en", this.RandomString(20) }
                },
                IsActive      = true,
                CartPredicate = "1 = 1",                     //for all carts
                ValidFrom     = DateTime.Today,
                ValidUntil    = DateTime.Today.AddMonths(1), // valid one month
                MaxApplicationsPerCustomer = 2
            };

            CartDiscount cartDiscount = this.CreateCartDiscount();

            discountCodeDraft.CartDiscounts = new List <Reference <CartDiscount> >()
            {
                new Reference <CartDiscount>()
                {
                    Id = cartDiscount.Id,
                }
            };

            return(discountCodeDraft);
        }
Exemple #5
0
        public void UpdateCartDiscountByIdChangeTarget()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            //creating new cart discount value
            var newCartDiscountTarget = new LineItemsCartDiscountTarget()
            {
                Predicate = " 1 <> 1"
            };

            List <UpdateAction <CartDiscount> > updateActions            = new List <UpdateAction <CartDiscount> >();
            ChangeTargetUpdateAction            changeTargetUpdateAction = new ChangeTargetUpdateAction()
            {
                Target = newCartDiscountTarget
            };

            updateActions.Add(changeTargetUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id),
                                                                                                    cartDiscount.Version, updateActions))
                                                 .Result;

            var cartDiscountTarget = (LineItemsCartDiscountTarget)cartDiscount.Target;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);

            Assert.NotEqual(cartDiscount.Version, retrievedCartDiscount.Version);
            Assert.NotEqual(cartDiscountTarget.Predicate, newCartDiscountTarget.Predicate);
        }
Exemple #6
0
        public static async Task <DiscountCodeDraft> GetDiscountCodeDraft(Project.Project project, Client client)
        {
            var name        = new LocalizedString();
            var description = new LocalizedString();

            foreach (string language in project.Languages)
            {
                string randomPostfix = Helper.GetRandomString(10);
                name.SetValue(language, string.Concat("test-discount-code-name", language, " ", randomPostfix));
                description.SetValue(language, string.Concat("test-discount-code-description", language, "-", randomPostfix));
            }
            CartDiscount cartDiscount = await Helper.CreateTestCartDiscount(project, client, true);

            var references = new List <Reference>
            {
                new Reference {
                    Id = cartDiscount.Id, ReferenceType = ReferenceType.CartDiscount
                }
            };
            var discountCodeDraft = new DiscountCodeDraft(Helper.GetRandomString(10), references, GetRandomBoolean())
            {
                Description                = description,
                Name                       = name,
                MaxApplications            = Helper.GetRandomNumber(100, 1000),
                MaxApplicationsPerCustomer = Helper.GetRandomNumber(100, 1000)
            };

            return(discountCodeDraft);
        }
Exemple #7
0
        private CartDiscount CreateCartDiscount()
        {
            CartDiscount cartDiscount = this.cartDiscountsFixture.CreateCartDiscount(requireDiscountCode: true);

            this.cartDiscountsFixture.CartDiscountsToDelete.Add(cartDiscount);
            return(cartDiscount);
        }
        public async Task ShouldApplyDiscountOnCartWithCustomLineItemsAsync()
        {
            // Arrange
            CartDiscount cartDiscount = await Helper.CreateCartDiscountForCustomLineItems(this._project, this._client);

            CartDraft cartDraft = Helper.GetTestCartDraftWithCustomLineItems(_project);

            // Act
            Response <Cart> response = await _client.Carts().CreateCartAsync(cartDraft);

            // Assert
            response.Result.CustomLineItems.Count.Should().Be(1);
            var customLineItem = response.Result.CustomLineItems.First();

            customLineItem.DiscountedPricePerQuantity.Count.Should().BeGreaterThan(0);
            var discountedLineItemPrice = customLineItem.DiscountedPricePerQuantity.First();

            discountedLineItemPrice.DiscountedPrice.Value.CentAmount.Should().BeGreaterThan(1);
            discountedLineItemPrice.DiscountedPrice.Value.CurrencyCode.Should().Be("EUR");
            Assert.NotNull(discountedLineItemPrice);
            Assert.NotNull(discountedLineItemPrice.DiscountedPrice);
            Assert.NotNull(discountedLineItemPrice.DiscountedPrice.Value);
            Assert.NotNull(discountedLineItemPrice.DiscountedPrice.Value);
            Assert.IsFalse(string.IsNullOrEmpty(discountedLineItemPrice.DiscountedPrice.Value.CurrencyCode));

            // Cleanup
            await this._client.CartDiscounts().DeleteCartDiscountAsync(cartDiscount.Id, 1);

            await this._client.Carts().DeleteCartAsync(response.Result);
        }
Exemple #9
0
        public void UpdateCartDiscountByIdChangeValue()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            //creating new cart discount value
            var newCartDiscountValue = this.cartDiscountFixture.GetCartDiscountValueAsAbsolute();

            List <UpdateAction <CartDiscount> > updateActions           = new List <UpdateAction <CartDiscount> >();
            ChangeValueUpdateAction             changeValueUpdateAction = new ChangeValueUpdateAction()
            {
                Value = newCartDiscountValue
            };

            updateActions.Add(changeValueUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id),
                                                                                                    cartDiscount.Version, updateActions))
                                                 .Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);

            var cardDiscountAmount          = ((AbsoluteCartDiscountValue)cartDiscount.Value).Money[0].CentAmount;
            var retrievedCartDiscountAmount =
                ((AbsoluteCartDiscountValue)retrievedCartDiscount.Value).Money[0].CentAmount;

            Assert.NotEqual(cartDiscount.Version, retrievedCartDiscount.Version);
            Assert.NotEqual(cardDiscountAmount, retrievedCartDiscountAmount);
        }
Exemple #10
0
        public void CalculateDiscount()
        {
            var percent = 50;
            var cd      = new CartDiscount(percent);

            Assert.Equal(percent, cd.PercentValue);
            Assert.Equal(50.0, cd.Make(100.0));
        }
Exemple #11
0
        public void DiscountForEmptyCart()
        {
            var cart = CommonInstansesCreator.GetCart();

            var discount = new CartDiscount(cart, 50);

            Assert.Equal(0, discount.GetCost());
        }
        private void AddToDictionary(Guid key, CartDiscount value)
        {
            if (!removedDiscount.ContainsKey(key))
            {
                removedDiscount.Add(key, new List <CartDiscount>());
            }

            removedDiscount[key].Add(value);
        }
Exemple #13
0
        public void AddCartDiscountTest()
        {
            var cart     = new Cart();
            var discount = new CartDiscount(10);

            cart.AddDiscount(discount);

            Assert.Equal(1, cart.CurrentState.CartDiscounts.Count);
            Assert.Equal(discount, cart.CurrentState.CartDiscounts.First());
        }
Exemple #14
0
        public void CreateCartDiscount()
        {
            IClient           commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscountDraft cartDiscountDraft   = this.cartDiscountFixture.GetCartDiscountDraft();
            CartDiscount      cartDiscount        = commerceToolsClient
                                                    .ExecuteAsync(new CreateCommand <CartDiscount>(cartDiscountDraft)).Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(cartDiscount);
            Assert.Equal(cartDiscountDraft.Name["en"], cartDiscount.Name["en"]);
        }
Exemple #15
0
        public void GetCartDiscountById()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            this.cartDiscountFixture.CartDiscountsToDelete.Add(cartDiscount);
            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new GetByIdCommand <CartDiscount>(new Guid(cartDiscount.Id))).Result;

            Assert.Equal(cartDiscount.Id, retrievedCartDiscount.Id);
        }
        public async Task ShouldGetCartDiscountByIdAsync()
        {
            Response <CartDiscount> response = await _client.CartDiscounts().GetCartDiscountByIdAsync(_testCartDiscount.Id);

            Assert.IsTrue(response.Success);

            CartDiscount cartDiscount = response.Result;

            Assert.NotNull(cartDiscount.Id);
            Assert.AreEqual(cartDiscount.Id, _testCartDiscount.Id);
        }
Exemple #17
0
        public void Dispose()
        {
            IClient commerceToolsClient = this.GetService <IClient>();

            this.CartDiscountsToDelete.Reverse();
            foreach (CartDiscount cartDiscount in this.CartDiscountsToDelete)
            {
                CartDiscount deletedType = commerceToolsClient
                                           .ExecuteAsync(new DeleteByIdCommand <CartDiscount>(new Guid(cartDiscount.Id),
                                                                                              cartDiscount.Version)).Result;
            }
        }
        public void AddShoppingCartDiscount(ShoppingCart cart, Discount discount)
        {
            var cart_discount = new CartDiscount {
                DiscountId     = discount.Id,
                ShoppingCartId = cart.Id,
                Discount       = discount,
                ShoppingCart   = cart
            };

            _context.ShoppingCartDiscounts.Add(cart_discount);

            Save();
        }
Exemple #19
0
        public void DiscountWorks()
        {
            var cart = CommonInstansesCreator.GetCart();
            var productRepository = CommonInstansesCreator.GetProductRepo();
            var product           = productRepository.FirstOrDefault();

            cart.AddProduct(new CartItem {
                Count = 2, Product = product
            });

            var discount = new CartDiscount(cart, 50);

            Assert.Equal(product.Cost, discount.GetCost());
        }
Exemple #20
0
        public async void DeleteCartDiscountById()
        {
            IClient      commerceToolsClient   = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount          = this.cartDiscountFixture.CreateCartDiscount();
            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(
                new DeleteByIdCommand <CartDiscount>(new Guid(cartDiscount.Id), cartDiscount.Version))
                                                 .Result;
            NotFoundException exception = await Assert.ThrowsAsync <NotFoundException>(() =>
                                                                                       commerceToolsClient.ExecuteAsync(
                                                                                           new GetByIdCommand <CartDiscount>(new Guid(retrievedCartDiscount.Id))));

            Assert.Equal(404, exception.StatusCode);
        }
Exemple #21
0
        public void QueryCartDiscounts()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            this.cartDiscountFixture.CartDiscountsToDelete.Add(cartDiscount);
            QueryPredicate <CartDiscount> queryPredicate =
                new QueryPredicate <CartDiscount>(cd => cd.Id == cartDiscount.Id.valueOf());
            QueryCommand <CartDiscount> queryCommand = new QueryCommand <CartDiscount>();

            queryCommand.SetWhere(queryPredicate);
            PagedQueryResult <CartDiscount> returnedSet = commerceToolsClient.ExecuteAsync(queryCommand).Result;

            Assert.Contains(returnedSet.Results, cd => cd.Id == cartDiscount.Id);
        }
Exemple #22
0
        public void CalculateTotalWithProductsAndDiscounts()
        {
            var state = new CartState(new Cart());

            var       product = TestProducts.Cars.First();
            const int count   = 2;

            state.Products.Add(product, count);

            var cartDiscount    = new CartDiscount(50);
            var productDiscount = new ProductDiscount(product, 50);

            state.CartDiscounts.Add(cartDiscount);
            state.ProductDiscounts.Add(product, productDiscount);

            Assert.Equal(product.Price * count / 4, state.Total);
        }
Exemple #23
0
        public void UpdateCartDiscountByIdChangeSortOrder()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            List <UpdateAction <CartDiscount> > updateActions = new List <UpdateAction <CartDiscount> >();
            ChangeSortOrderUpdateAction         changeSortOrderUpdateAction = new ChangeSortOrderUpdateAction()
            {
                SortOrder = this.cartDiscountFixture.RandomSortOrder()
            };

            updateActions.Add(changeSortOrderUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id), cartDiscount.Version,
                                                                                                    updateActions))
                                                 .Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);
            Assert.NotEqual(retrievedCartDiscount.SortOrder, cartDiscount.SortOrder);
        }
Exemple #24
0
        public void UpdateCartDiscountByIdSetValidUntil()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            List <UpdateAction <CartDiscount> > updateActions             = new List <UpdateAction <CartDiscount> >();
            SetValidUntilUpdateAction           setValidUntilUpdateAction = new SetValidUntilUpdateAction()
            {
                ValidUntil = DateTime.Today.AddDays(1)
            };

            updateActions.Add(setValidUntilUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id), cartDiscount.Version,
                                                                                                    updateActions))
                                                 .Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);
            Assert.NotEqual(retrievedCartDiscount.ValidUntil, cartDiscount.ValidUntil);
        }
Exemple #25
0
        public void UpdateCartDiscountByIdChangeStackingMode()
        {
            IClient      commerceToolsClient = this.cartDiscountFixture.GetService <IClient>();
            CartDiscount cartDiscount        = this.cartDiscountFixture.CreateCartDiscount();

            List <UpdateAction <CartDiscount> > updateActions = new List <UpdateAction <CartDiscount> >();
            ChangeStackingModeUpdateAction      changeStackingModeUpdateAction = new ChangeStackingModeUpdateAction()
            {
                StackingMode = StackingMode.StopAfterThisDiscount
            };

            updateActions.Add(changeStackingModeUpdateAction);

            CartDiscount retrievedCartDiscount = commerceToolsClient
                                                 .ExecuteAsync(new UpdateByIdCommand <CartDiscount>(new Guid(cartDiscount.Id), cartDiscount.Version,
                                                                                                    updateActions))
                                                 .Result;

            this.cartDiscountFixture.CartDiscountsToDelete.Add(retrievedCartDiscount);
            Assert.NotEqual(retrievedCartDiscount.StackingMode, cartDiscount.StackingMode);
        }
        public JsonResult ApplyDiscountCode(string discountCode)
        {
            var result = new DiscountMessage();

            try
            {
                discountCode = discountCode.ToUpper();
                var discount = storeDB.Discounts.SingleOrDefault(d => d.Code.ToUpper() == discountCode);
                if (discount == null)
                {
                    result.Error = string.Format("Discount code {0} does not exist", discountCode);
                }
                else
                {
                    result.Description = discount.Description;
                    var localCart = ShoppingCart.GetCart(this.HttpContext);
                    var disc      = localCart.Discounts.Where(d => d.CartId == localCart.ShoppingCartId && d.DiscountCode == discount.Code).FirstOrDefault();
                    if (disc == null)
                    {
                        disc = new CartDiscount {
                            DiscountCode = discount.Code, CartId = localCart.ShoppingCartId, Description = discount.Description
                        };
                        storeDB.CartDiscounts.Add(disc);
                        storeDB.SaveChanges();
                    }
                    GetCartTotals(result, localCart);
                    result.Code   = discountCode;
                    disc          = localCart.Discounts.Where(d => d.CartId == localCart.ShoppingCartId && d.DiscountCode == discount.Code).FirstOrDefault();
                    result.Amount = disc.Amount;
                }
            }
            catch (Exception e)
            {
                result.Error = e.Message;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public void Init()
        {
            _client = Helper.GetClient();

            Task <Response <Project.Project> > projectTask = _client.Project().GetProjectAsync();

            projectTask.Wait();
            Assert.IsTrue(projectTask.Result.Success);
            _project = projectTask.Result.Result;

            Assert.IsTrue(_project.Languages.Count > 0);
            Assert.IsTrue(_project.Currencies.Count > 0);

            Task <CartDiscount> cartDiscountTask =
                Helper.CreateTestCartDiscount(this._project, this._client);

            cartDiscountTask.Wait();

            Assert.IsNotNull(cartDiscountTask.Result);

            _testCartDiscount = cartDiscountTask.Result;
            Assert.NotNull(_testCartDiscount);
            Assert.NotNull(_testCartDiscount.Id);
        }
Exemple #28
0
 public void AddDiscount(CartDiscount discount)
 {
     CurrentState.CartDiscounts.Add(discount);
 }
 private async Task AddOrderDiscounts(Order order, CartDiscount discount)
 {
     try
     {
         var entity = new data.OrderDiscount()
         {
             OrderId = order.OrderId,
             DiscountId = discount.DiscountId,
             Discount = discount.Discount,
             Quantity = discount.Quantity
         };
         // Set the order total of the shopping cart
         _db.OrderDiscounts.Add(entity);
         await _db.SaveChangesAsync();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         throw;
     }
 }