예제 #1
0
        public void ShouldNotRemovePartyFromCart()
        {
            cart = new Cart
            {
                ExternalId = visitorId.ToString(),
                Lines      = new ReadOnlyCollectionAdapter <CartLine> {
                    new CartLine()
                },
                AccountingCustomerParty = new CartParty()
                {
                    PartyID = "1", ExternalId = "1"
                },
                BuyerCustomerParty = new CartParty()
                {
                    PartyID = "1", ExternalId = "1"
                }
            };

            partiesList = new List <Party>();


            request = new RemovePartiesRequest(cart, partiesList);
            result  = new RemovePartiesResult();
            args    = new ServicePipelineArgs(request, result);

            var addressesToRemove = new[] { new CustomerAddressModel()
                                            {
                                                AddressType = AddressTypeModel.Billing
                                            } };
            var responseModel = new Response()
            {
                Message = "Success", Success = true
            };

            client.RemoveAddresses(addressesToRemove, visitorId).Returns(responseModel);

            // act
            processor.Process(args);

            // assert
            result.Success.Should().BeTrue();
        }
예제 #2
0
        /// <summary>
        /// Processes the specified arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process(Sitecore.Commerce.Pipelines.ServicePipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Request, "args.request");

            RemovePartiesRequest request = (RemovePartiesRequest)args.Request;
            RemovePartiesResult  result  = (RemovePartiesResult)args.Result;

            var cartContext = CartPipelineContext.Get(request.RequestContext);

            Assert.IsNotNull(cartContext, "cartContext");

            List <Party> partiesRemoved = new List <Party>();

            if (cartContext.Basket != null)
            {
                foreach (Party party in request.Parties)
                {
                    if (party != null)
                    {
                        Assert.ArgumentNotNullOrEmpty(party.ExternalId, "party.ExternalId");

                        OrderAddress orderAddress = cartContext.Basket.Addresses[party.ExternalId];
                        if (orderAddress != null)
                        {
                            cartContext.Basket.Addresses.Remove(orderAddress);

                            partiesRemoved.Add(party);
                        }
                    }
                }
            }

            result.Parties = partiesRemoved;

            // Needed by the RunSaveCart CommerceConnect pipeline.
            var translateCartRequest = new TranslateOrderGroupToEntityRequest(cartContext.UserId, cartContext.ShopName, cartContext.Basket);
            var translateCartResult  = PipelineUtility.RunCommerceConnectPipeline <TranslateOrderGroupToEntityRequest, TranslateOrderGroupToEntityResult>(PipelineNames.TranslateOrderGroupToEntity, translateCartRequest);

            result.Cart = translateCartResult.Cart;
        }