Ejemplo n.º 1
0
        public UpdateBasketItemTests()
        {
            var factory = new WebApplicationFactory <Startup>();

            _client = new CheckoutHttpClient(factory.CreateClient());

            _basketItem1 = new AddBasketItemRequest
            {
                Quantity = 2,
                Ref      = "ABC",
                Name     = "Banana",
                Price    = 2.99M,
            };

            _basketItem2 = new AddBasketItemRequest
            {
                Quantity = 1,
                Ref      = "XYZ",
                Name     = "Apple",
                Price    = 4.99M,
            };

            _updateBasketItem1Request = new UpdateBasketItemRequest
            {
                Quantity = 50
            };
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> PatchBasketItem(string basketId, string itemId, [FromBody] JsonPatchDocument <Item> jsonPatchDocument)
        {
            try
            {
                var basketItem = await this.getBasketItemById
                                 .Execute(GetBasketItemByIdRequest.Create(basketId, itemId));

                if (null == basketItem)
                {
                    return(NotFound());
                }

                jsonPatchDocument.ApplyTo(basketItem);

                await this.updateBasketItem
                .Execute(UpdateBasketItemRequest.Create(basketId, basketItem));

                return(new ObjectResult(basketItem));
            }
            catch (Exception e)
            {
                this.logger.Error(e.Message);
                return(BadRequest());
            }
        }
Ejemplo n.º 3
0
        public async Task UpdateBasketItemAsync(Guid basketId, Guid basketItemId, UpdateBasketItemRequest updateBasketItemRequest)
        {
            if (updateBasketItemRequest == null)
            {
                throw new ArgumentNullException(nameof(updateBasketItemRequest));
            }

            var result = await PutAsync($"/basket/{basketId}/{basketItemId}", new UpdateBasketItemInternalRequest { Quantity = updateBasketItemRequest.Quantity });

            result.EnsureSuccessStatusCode();
        }
Ejemplo n.º 4
0
        public async Task Execute(UpdateBasketItemRequest request)
        {
            try
            {
                var domainItem = this.basketsTypeAdapter.ToDomain(request.Item);
                await this.basketsRepository.UpdateItem(request.BasketId, domainItem);

                await this.PublishBasketItemUpdated(domainItem);
            }
            catch (Exception ex)
            {
                this.logger.Error(
                    $"{nameof(InsertBasket)}.{nameof(Execute)}",
                    ex);
                throw;
            }
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> UpdateBasketItem(Guid basketId, Guid basketItemId, [FromBody] UpdateBasketItemRequest basketItem)
        {
            if (ModelState.IsValid)
            {
                await _mediatr.Send(new UpdateBasketItemCommand
                {
                    BasketId     = basketId,
                    BasketItemId = basketItemId,
                    Quantity     = basketItem.Quantity
                });

                return(Ok());
            }

            var errorList = ModelState.ToDictionary(
                kvp => kvp.Key,
                kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
                );

            return(BadRequest(errorList));
        }