Example #1
0
        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);
                });
            });
        }
Example #2
0
        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);
            });
        }
Example #3
0
        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);
            });
        }