public async Task ShouldCreateOrderFromCartAndDeleteOrderAsync() { CartDraft cartDraft = Helper.GetTestCartDraft(_project, _testCustomers[0].Id); Response <Cart> cartResponse = await _client.Carts().CreateCartAsync(cartDraft); Assert.IsTrue(cartResponse.Success); Cart cart = cartResponse.Result; Assert.NotNull(cart.Id); int quantity = 3; AddLineItemAction addLineItemAction = new AddLineItemAction(_testProduct.Id, _testProduct.MasterData.Current.MasterVariant.Id); addLineItemAction.Quantity = quantity; cartResponse = await _client.Carts().UpdateCartAsync(cart, addLineItemAction); Assert.IsTrue(cartResponse.Success); cart = cartResponse.Result; Assert.NotNull(cart.Id); Assert.NotNull(cart.LineItems); Assert.AreEqual(cart.LineItems.Count, 1); Assert.AreEqual(cart.LineItems[0].ProductId, _testProduct.Id); Assert.AreEqual(cart.LineItems[0].Variant.Id, _testProduct.MasterData.Current.MasterVariant.Id); Assert.AreEqual(cart.LineItems[0].Quantity, quantity); OrderFromCartDraft orderFromCartDraft = Helper.GetTestOrderFromCartDraft(cart); Response <Order> orderResponse = await _client.Orders().CreateOrderFromCartAsync(orderFromCartDraft); Assert.IsTrue(orderResponse.Success); Order order = orderResponse.Result; Assert.NotNull(order.Id); // To get the new version number. cartResponse = await _client.Carts().GetCartByIdAsync(cart.Id); Assert.IsTrue(cartResponse.Success); cart = cartResponse.Result; string deletedOrderId = order.Id; Response <JObject> response = await _client.Orders().DeleteOrderAsync(order); Assert.IsTrue(response.Success); orderResponse = await _client.Orders().GetOrderByIdAsync(deletedOrderId); Assert.IsFalse(orderResponse.Success); await _client.Carts().DeleteCartAsync(cart); }
public async Task ShouldAddChangeAndRemoveLineItemAsync() { int quantity = 2; int newQuantity = 3; AddLineItemAction addLineItemAction = new AddLineItemAction(_testProduct.Id, _testProduct.MasterData.Current.MasterVariant.Id); addLineItemAction.Quantity = quantity; Response <Cart> response = await _client.Carts().UpdateCartAsync(_testCarts[0], addLineItemAction); Assert.True(response.Success); _testCarts[0] = response.Result; Assert.NotNull(_testCarts[0].Id); Assert.NotNull(_testCarts[0].LineItems); Assert.Equal(_testCarts[0].LineItems.Count, 1); Assert.Equal(_testCarts[0].LineItems[0].ProductId, _testProduct.Id); Assert.Equal(_testCarts[0].LineItems[0].Variant.Id, _testProduct.MasterData.Current.MasterVariant.Id); Assert.Equal(_testCarts[0].LineItems[0].Quantity, quantity); ChangeLineItemQuantityAction changeLineItemQuantityAction = new ChangeLineItemQuantityAction(_testCarts[0].LineItems[0].Id, newQuantity); response = await _client.Carts().UpdateCartAsync(_testCarts[0], changeLineItemQuantityAction); Assert.True(response.Success); _testCarts[0] = response.Result; Assert.NotNull(_testCarts[0].Id); Assert.NotNull(_testCarts[0].LineItems); Assert.Equal(_testCarts[0].LineItems.Count, 1); Assert.Equal(_testCarts[0].LineItems[0].Quantity, newQuantity); RemoveLineItemAction removeLineItemAction = new RemoveLineItemAction(_testCarts[0].LineItems[0].Id); response = await _client.Carts().UpdateCartAsync(_testCarts[0], removeLineItemAction); Assert.True(response.Success); _testCarts[0] = response.Result; Assert.NotNull(_testCarts[0].Id); Assert.NotNull(_testCarts[0].LineItems); Assert.Equal(_testCarts[0].LineItems.Count, 0); }
public async Task ShouldAddChangeAndRemoveLineItemAsync() { int quantity = 2; int newQuantity = 3; for (int i = 4; i < _testCarts.Count; i++) { var cart = _testCarts[i]; AddLineItemAction addLineItemAction = new AddLineItemAction(_testProduct.Id, _testProduct.MasterData.Current.MasterVariant.Id); addLineItemAction.Quantity = quantity; if (cart.TaxMode != null && cart.TaxMode == TaxMode.External) { addLineItemAction.ExternalTaxRate = new ExternalTaxRateDraft("TestTaxRate", _project.Countries[0]) { Amount = 0.1m }; addLineItemAction.ExternalPrice = new Money() { CentAmount = 5, CurrencyCode = _project.Currencies[0] }; } Response <Cart> response = await _client.Carts().UpdateCartAsync(cart, addLineItemAction); Assert.IsTrue(response.Success); cart = response.Result; Assert.NotNull(cart.Id); Assert.NotNull(cart.LineItems, "LineItems are null"); Assert.AreEqual(cart.LineItems.Count, 1); Assert.AreEqual(cart.LineItems[0].ProductId, _testProduct.Id); Assert.AreEqual(cart.LineItems[0].Variant.Id, _testProduct.MasterData.Current.MasterVariant.Id); Assert.AreEqual(cart.LineItems[0].Quantity, quantity); Assert.NotNull(cart.LineItems[0].TaxRate, "TaxRate is null"); if (cart.TaxMode != null && cart.TaxMode == TaxMode.External) { Assert.AreEqual(cart.LineItems[0].TaxRate.Name, addLineItemAction.ExternalTaxRate.Name); Assert.AreEqual(cart.LineItems[0].TaxRate.Country, addLineItemAction.ExternalTaxRate.Country); Assert.AreEqual(cart.LineItems[0].TaxRate.Amount, addLineItemAction.ExternalTaxRate.Amount); Assert.AreEqual(cart.LineItems[0].Price.Value.CentAmount, addLineItemAction.ExternalPrice.CentAmount); Assert.AreEqual(cart.LineItems[0].Price.Value.CurrencyCode, addLineItemAction.ExternalPrice.CurrencyCode); } ChangeLineItemQuantityAction changeLineItemQuantityAction = new ChangeLineItemQuantityAction(cart.LineItems[0].Id, newQuantity); if (cart.TaxMode != null && cart.TaxMode == TaxMode.External) { changeLineItemQuantityAction.ExternalPrice = new Money() { CentAmount = 10, CurrencyCode = _project.Currencies[0] }; } response = await _client.Carts().UpdateCartAsync(cart, changeLineItemQuantityAction); Assert.IsTrue(response.Success, string.Format("TaxMode: {0}", cart.TaxMode)); Console.Error.WriteLine(string.Format("CartManagerTest - Information Only - CartId: {0} TaxMode: {1}", cart.Id, cart.TaxMode)); cart = response.Result; Assert.NotNull(cart.Id); Assert.NotNull(cart.LineItems); Assert.AreEqual(cart.LineItems.Count, 1); Assert.AreEqual(cart.LineItems[0].Quantity, newQuantity); RemoveLineItemAction removeLineItemAction = new RemoveLineItemAction(cart.LineItems[0].Id); response = await _client.Carts().UpdateCartAsync(cart, removeLineItemAction); Assert.IsTrue(response.Success); cart = response.Result; Assert.NotNull(cart.Id); Assert.NotNull(cart.LineItems); Assert.AreEqual(cart.LineItems.Count, 0); } }
public void Init() { _client = new Client(Helper.GetConfiguration()); Task <Response <Project.Project> > projectTask = _client.Project().GetProjectAsync(); projectTask.Wait(); Assert.IsTrue(projectTask.Result.Success); _project = projectTask.Result.Result; _testCustomers = new List <Customer>(); for (int i = 0; i < 5; i++) { CustomerDraft customerDraft = Helper.GetTestCustomerDraft(); Task <Response <CustomerCreatedMessage> > customerTask = _client.Customers().CreateCustomerAsync(customerDraft); customerTask.Wait(); Assert.IsTrue(customerTask.Result.Success); CustomerCreatedMessage customerCreatedMessage = customerTask.Result.Result; Assert.NotNull(customerCreatedMessage.Customer); Assert.NotNull(customerCreatedMessage.Customer.Id); _testCustomers.Add(customerCreatedMessage.Customer); } _testCarts = new List <Cart>(); Task <Response <Cart> > cartTask; for (int i = 0; i < 5; i++) { CartDraft cartDraft = Helper.GetTestCartDraft(_project, _testCustomers[i].Id); cartTask = _client.Carts().CreateCartAsync(cartDraft); cartTask.Wait(); Assert.IsTrue(cartTask.Result.Success); Cart cart = cartTask.Result.Result; Assert.NotNull(cart.Id); _testCarts.Add(cart); } ProductTypeDraft productTypeDraft = Helper.GetTestProductTypeDraft(); Task <Response <ProductType> > productTypeTask = _client.ProductTypes().CreateProductTypeAsync(productTypeDraft); productTypeTask.Wait(); Assert.IsTrue(productTypeTask.Result.Success); _testProductType = productTypeTask.Result.Result; Assert.NotNull(_testProductType.Id); TaxCategoryDraft taxCategoryDraft = Helper.GetTestTaxCategoryDraft(_project); Task <Response <TaxCategory> > taxCategoryTask = _client.TaxCategories().CreateTaxCategoryAsync(taxCategoryDraft); taxCategoryTask.Wait(); Assert.IsTrue(taxCategoryTask.Result.Success); _testTaxCategory = taxCategoryTask.Result.Result; Assert.NotNull(_testTaxCategory.Id); Task <Response <ZoneQueryResult> > zoneQueryResultTask = _client.Zones().QueryZonesAsync(); zoneQueryResultTask.Wait(); if (zoneQueryResultTask.Result.Success && zoneQueryResultTask.Result.Result.Results.Count > 0) { _testZone = zoneQueryResultTask.Result.Result.Results[0]; _createdTestZone = false; } else { ZoneDraft zoneDraft = Helper.GetTestZoneDraft(); Task <Response <Zone> > zoneTask = _client.Zones().CreateZoneAsync(zoneDraft); zoneTask.Wait(); Assert.IsTrue(zoneTask.Result.Success); _testZone = zoneTask.Result.Result; _createdTestZone = true; } Assert.NotNull(_testZone.Id); ShippingMethodDraft shippingMethodDraft = Helper.GetTestShippingMethodDraft(_project, _testTaxCategory, _testZone); Task <Response <ShippingMethod> > shippingMethodTask = _client.ShippingMethods().CreateShippingMethodAsync(shippingMethodDraft); shippingMethodTask.Wait(); Assert.IsTrue(shippingMethodTask.Result.Success); _testShippingMethod = shippingMethodTask.Result.Result; Assert.NotNull(_testShippingMethod.Id); ProductDraft productDraft = Helper.GetTestProductDraft(_project, _testProductType.Id, _testTaxCategory.Id); Task <Response <Product> > productTask = _client.Products().CreateProductAsync(productDraft); productTask.Wait(); Assert.IsTrue(productTask.Result.Success); _testProduct = productTask.Result.Result; Assert.NotNull(_testProduct.Id); int quantity = 1; AddLineItemAction addLineItemAction = new AddLineItemAction(_testProduct.Id, _testProduct.MasterData.Current.MasterVariant.Id); addLineItemAction.Quantity = quantity; cartTask = _client.Carts().UpdateCartAsync(_testCarts[0], addLineItemAction); cartTask.Wait(); Assert.IsTrue(cartTask.Result.Success); _testCarts[0] = cartTask.Result.Result; Assert.NotNull(_testCarts[0].Id); Assert.NotNull(_testCarts[0].LineItems); Assert.AreEqual(_testCarts[0].LineItems.Count, 1); Assert.AreEqual(_testCarts[0].LineItems[0].ProductId, _testProduct.Id); Assert.AreEqual(_testCarts[0].LineItems[0].Variant.Id, _testProduct.MasterData.Current.MasterVariant.Id); Assert.AreEqual(_testCarts[0].LineItems[0].Quantity, quantity); OrderFromCartDraft orderFromCartDraft = Helper.GetTestOrderFromCartDraft(_testCarts[0]); Task <Response <Order> > orderTask = _client.Orders().CreateOrderFromCartAsync(orderFromCartDraft); orderTask.Wait(); Assert.IsTrue(orderTask.Result.Success); _testOrder = orderTask.Result.Result; Assert.NotNull(_testOrder.Id); cartTask = _client.Carts().GetCartByIdAsync(_testCarts[0].Id); cartTask.Wait(); Assert.IsTrue(cartTask.Result.Success); _testCarts[0] = cartTask.Result.Result; Assert.NotNull(_testCarts[0].Id); }
/// <summary> /// Run Cart example code. /// </summary> /// <param name="client">Client</param> /// <param name="project">Project</param> public async static Task Run(Client client, Project.Project project) { string currency = project.Currencies[0]; string country = project.Countries[0]; /* CREATE CART * =================================================================================== */ CartDraft cartDraft = new CartDraft(currency); Response <Cart> cartResponse = await client.Carts().CreateCartAsync(cartDraft); Cart cart = null; if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Created new cart with ID {0}.", cart.Id); } else { Helper.WriteError <Cart>(cartResponse); } /* GET CARTS * =================================================================================== */ Response <CartQueryResult> cartQueryResponse = await client.Carts().QueryCartsAsync(); List <Cart> carts = new List <Cart>(); if (cartQueryResponse.Success) { CartQueryResult cartQueryResult = cartQueryResponse.Result; carts = cartQueryResult.Results; Console.WriteLine("Retrieved {0} carts.", carts.Count); } else { Helper.WriteError <CartQueryResult>(cartQueryResponse); } // Get a single cart by its ID. string cartId = carts[0].Id; cartResponse = await client.Carts().GetCartByIdAsync(cartId); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Retrieved cart with ID {0}.", cart.Id); } else { Helper.WriteError <Cart>(cartResponse); } /* UPDATE A CART * =================================================================================== * Each change is made using its own update action object which maps to an update * action call in the API. The list of update action objects are sent to the API using * a single request. If there is an update action in the API that has not yet been * implemented in the SDK, you can use the GenericAction class to make any request you * want (as long as it is a valid update action supported by the API). */ SetCountryAction setCountryAction = new SetCountryAction(); setCountryAction.Country = country; // Here is how you would make the setCustomerEmail request using a GenericAction object. GenericAction setCustomerEmailAction = new GenericAction("setCustomerEmail"); setCustomerEmailAction["email"] = "*****@*****.**"; //List<UpdateAction> actions = new List<UpdateAction>() { setCountryAction, setCustomerEmailAction }; List <UpdateAction> actions = new List <UpdateAction>() { setCustomerEmailAction }; cartResponse = await client.Carts().UpdateCartAsync(cart, actions); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Updated cart with ID {0}.", cart.Id); Console.WriteLine("Cart country: {0}", cart.Country); Console.WriteLine("Cart customer email: {0}", cart.CustomerEmail); } else { Helper.WriteError <Cart>(cartResponse); } /* ADDING, CHANGING AND REMOVING LINE ITEMS * =================================================================================== * Making line item requests is done using update actions. */ // Find a product to add to the cart as a line item. Response <ProductQueryResult> productQueryResponse = await client.Products().QueryProductsAsync(); Product product = null; if (productQueryResponse.Success) { ProductQueryResult productQueryResult = productQueryResponse.Result; product = productQueryResult.Results[0]; Console.WriteLine("Retrieved product with ID {0}.", product.Id); } else { Helper.WriteError <ProductQueryResult>(productQueryResponse); } // Add the line item to a cart. AddLineItemAction addLineItemAction = new AddLineItemAction(product.Id, product.MasterData.Current.MasterVariant.Id); addLineItemAction.Quantity = 1; Console.WriteLine("addLineItemAction.Action: {0}", addLineItemAction.Action); Console.WriteLine("addLineItemAction.ProductId: {0}", addLineItemAction.ProductId); Console.WriteLine("addLineItemAction.VariantId: {0}", addLineItemAction.VariantId); Console.WriteLine("addLineItemAction.Quantity: {0}", addLineItemAction.Quantity); Console.WriteLine("cart.Id: {0}", cart.Id); Console.WriteLine("cart.Version: {0}", cart.Version); cartResponse = await client.Carts().UpdateCartAsync(cart, addLineItemAction); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Added line item to cart with ID {0}.", cart.Id); Console.WriteLine("Line item product ID: {0}.", cart.LineItems[0].ProductId); Console.WriteLine("Line item quantity: {0}.", cart.LineItems[0].Quantity); } else { Helper.WriteError <Cart>(cartResponse); } // Use another update action to change the quantity of the line item in the cart to 2. if (cart.LineItems.Count > 0) { ChangeLineItemQuantityAction changeLineItemQuantityAction = new ChangeLineItemQuantityAction(cart.LineItems[0].Id, 2); cartResponse = await client.Carts().UpdateCartAsync(cart, changeLineItemQuantityAction); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Changed line item quanity in cart with ID {0}.", cart.Id); Console.WriteLine("Line item product ID: {0}.", cart.LineItems[0].ProductId); Console.WriteLine("Line item quantity: {0}.", cart.LineItems[0].Quantity); } else { Helper.WriteError <Cart>(cartResponse); } } // Finally, remove the line item from the cart. if (cart.LineItems.Count > 0) { RemoveLineItemAction removeLineItemAction = new RemoveLineItemAction(cart.LineItems[0].Id); cartResponse = await client.Carts().UpdateCartAsync(cart, removeLineItemAction); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Removed line item from cart with ID {0}.", cart.Id); Console.WriteLine("Line items in cart: {0}.", cart.LineItems.Count); } else { Helper.WriteError <Cart>(cartResponse); } } /* DELETE A CART * =================================================================================== * Delete API requests return a generic response, but some return the object that was * deleted. The Carts delete request returns the full representation. */ cartResponse = await client.Carts().DeleteCartAsync(cart); if (cartResponse.Success) { cart = cartResponse.Result; Console.WriteLine("Deleted cart with ID {0}.", cart.Id); } else { Helper.WriteError <Cart>(cartResponse); } }