public async void ApplyOrderEditAddPayment() { await WithPayment(client, async payment => { Assert.NotNull(payment); await WithUpdateableSimpleOrder(client, async order => { Assert.Null(order.PaymentInfo); //create orderEdit with stagedAction AddPaymentStagedAction await WithUpdateableOrderEdit(client, draft => { var orderEditDraft = DefaultOrderEditDraft(draft, order); var action = new AddPaymentUpdateAction { Payment = payment.ToKeyResourceIdentifier() }; orderEditDraft.StagedActions.Add(action); return(orderEditDraft); }, async orderEdit => { var retrievedOrderEdit = await client .ExecuteAsync(orderEdit.ToIdResourceIdentifier().GetById().Expand(oe => oe.Resource)); Assert.NotNull(retrievedOrderEdit); Assert.NotNull(retrievedOrderEdit.Resource.Obj); //Apply OrderEdit var applyOrderEditCommand = new ApplyOrderEditCommand(retrievedOrderEdit, retrievedOrderEdit.Resource.Obj.Version); var appliedOrderEdit = await client.ExecuteAsync(applyOrderEditCommand); Assert.NotNull(appliedOrderEdit.Result); Assert.IsType <OrderEditApplied>(appliedOrderEdit.Result); return(appliedOrderEdit); }); //then retrieved updated order var updatedOrder = await client .ExecuteAsync(order.ToIdResourceIdentifier().GetById()); Assert.NotNull(updatedOrder.PaymentInfo); Assert.Single(updatedOrder.PaymentInfo.Payments); Assert.Equal(payment.Id, updatedOrder.PaymentInfo.Payments[0].Id); return(updatedOrder); }); }); }
public async void ApplyOrderEditSetCustomerEmail() { var email = "*****@*****.**"; await WithUpdateableSimpleOrder(client, async order => { Assert.Null(order.CustomerEmail); //create orderEdit with stagedAction SetCustomerEmailStagedAction await WithUpdateableOrderEdit(client, draft => { var orderEditDraft = DefaultOrderEditDraft(draft, order); var action = new SetCustomerEmailUpdateAction { Email = email }; orderEditDraft.StagedActions.Add(action); return(orderEditDraft); }, async orderEdit => { var retrievedOrderEdit = await client .ExecuteAsync(orderEdit.ToIdResourceIdentifier().GetById().Expand(oe => oe.Resource)); Assert.NotNull(retrievedOrderEdit); Assert.NotNull(retrievedOrderEdit.Resource.Obj); //Apply OrderEdit var applyOrderEditCommand = new ApplyOrderEditCommand(retrievedOrderEdit, retrievedOrderEdit.Resource.Obj.Version); var appliedOrderEdit = await client.ExecuteAsync(applyOrderEditCommand); Assert.NotNull(appliedOrderEdit.Result); Assert.IsType <OrderEditApplied>(appliedOrderEdit.Result); return(appliedOrderEdit); }); //then retrieved updated order var updatedOrder = await client .ExecuteAsync(order.ToIdResourceIdentifier().GetById()); Assert.NotNull(updatedOrder.CustomerEmail); Assert.Equal(email, updatedOrder.CustomerEmail); return(updatedOrder); }); }
public async void ApplyOrderEditAddLineItem() { string addedItemSku = ""; var addedItemQuantity = 5; await WithUpdateableSimpleOrder(client, async order => { Assert.Single(order.LineItems); var taxCategoryRef = await GetProductTaxCategory(client, order.LineItems[0].ProductId); await WithProduct(client, draft => { var productDraft = DefaultProductDraft(draft); productDraft.TaxCategory = taxCategoryRef; return(productDraft); }, async product => { Assert.NotNull(product); addedItemSku = product.MasterData.Staged.MasterVariant.Sku; //create orderEdit with stagedAction AddLineItemStagedAction await WithUpdateableOrderEdit(client, draft => { var orderEditDraft = DefaultOrderEditDraft(draft, order); //Add a new lineItem var action = new AddLineItemUpdateAction { Sku = addedItemSku, Quantity = addedItemQuantity }; orderEditDraft.StagedActions.Add(action); return(orderEditDraft); }, async orderEdit => { var retrievedOrderEdit = await client .ExecuteAsync( orderEdit.ToIdResourceIdentifier().GetById().Expand(oe => oe.Resource)); Assert.NotNull(retrievedOrderEdit); Assert.NotNull(retrievedOrderEdit.Resource.Obj); //Apply OrderEdit var applyOrderEditCommand = new ApplyOrderEditCommand(retrievedOrderEdit, retrievedOrderEdit.Resource.Obj.Version); var appliedOrderEdit = await client.ExecuteAsync(applyOrderEditCommand); Assert.NotNull(appliedOrderEdit.Result); Assert.IsType <OrderEditApplied>(appliedOrderEdit.Result); return(appliedOrderEdit); }); }); //then retrieved updated order var updatedOrder = await client .ExecuteAsync(order.ToIdResourceIdentifier().GetById()); //assert that order now with 2 lineItems Assert.Equal(2, updatedOrder.LineItems.Count); Assert.Contains(updatedOrder.LineItems, item => item.Variant.Sku == addedItemSku && item.Quantity == addedItemQuantity); return(updatedOrder); }); }