Example #1
0
        public override async Task <CartAggregate> Handle(GetCartQuery request, CancellationToken cancellationToken)
        {
            var result = await base.Handle(request, cancellationToken);

            result.Cart.ChannelId = "my-cool-channel";
            return(result);
        }
        public async Task Step5__Customer_Submits_A_Valid_Order()
        {
            // Submit order
            var submitOrderCommand = new SubmitOrderCommand
            {
                PhoneNumber = "+375291234567",
                CartId      = _cart.Id
            };
            var order = await Client.SubmitOrder(submitOrderCommand);

            var expectedOrder = new OrderModel
            {
                Id          = _cart.Id,
                PhoneNumber = submitOrderCommand.PhoneNumber,
                Lines       = _selectedBooks.Select(book => new OrderLineModel
                {
                    Book  = book,
                    Price = book.Price
                }).ToList()
            };

            order.Should().BeEquivalentTo(expectedOrder);

            // Cart should become empty
            var cartQuery = new GetCartQuery {
                CartId = _cart.Id
            };
            var cart = await Client.GetCart(cartQuery);

            cart.Books.Should().BeEmpty();
        }
        public async Task <ActionResult <CartModel> > GetCart(Guid cartId)
        {
            var query = new GetCartQuery {
                CartId = cartId
            };
            var cart = await _mediator.Send(query);

            return(cart);
        }
Example #4
0
        public async Task <CartModel> GetCart(GetCartQuery query)
        {
            var url      = $"carts/{query.CartId}";
            var response = await _httpClient.GetAsync(url);

            var cart = await SafelyReadFromJsonAsync <CartModel>(response);

            cart.Id.Should().Be(query.CartId);
            return(cart);
        }
        public async Task <CommandResponse <Model.ShoppingCart> > ExecuteAsync(GetCartQuery command, CommandResponse <Model.ShoppingCart> previousResult)
        {
            _logger.LogInformation("Getting basket for user {0}", command.AuthenticatedUserId);
            try
            {
                Model.ShoppingCart cart = await _repository.GetActualOrDefaultAsync(command.AuthenticatedUserId);

                _logger.LogInformation("Retrieved cart for user {0} with {1} items", command.AuthenticatedUserId, cart.Items.Count);
                return(CommandResponse <Model.ShoppingCart> .Ok(cart));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Unable to get basket for user {0}", command.AuthenticatedUserId);
                return(CommandResponse <Model.ShoppingCart> .WithError("Unable to get basket"));
            }
        }
Example #6
0
        public async Task ExecuteAsync_Returns_All_Cart_Entries()
        {
            var entries = new List <CartEntry>
            {
                new CartEntry(),
                new CartEntry()
            };

            _table.SetupSegmentedQuery(entries);

            var cmd     = new GetCartQuery();
            var results = await cmd.ExecuteAsync(_table.Object);

            _table.VerifySegmentedQuery <CartEntry>();
            Assert.Equal(2, results.Count());
        }
        public async Task Step4__Customer_Tries_To_Submit_An_Order_Without_Phone_Number()
        {
            // Visit the cart page and check that books are still there
            var cartQuery = new GetCartQuery {
                CartId = _cart.Id
            };
            var cart = await Client.GetCart(cartQuery);

            cart.Should().BeEquivalentTo(_cart);

            // Submit order
            var submitOrderCommand = new SubmitOrderCommand
            {
                PhoneNumber = null,
                CartId      = _cart.Id
            };
            var exception = await Client.Invoking(x => x.SubmitOrder(submitOrderCommand))
                            .Should()
                            .ThrowAsync <ServiceException>();

            var error = exception.Which.Error.Should().BeOfType <ValidationError>().Subject;

            error.Errors.Should().ContainKey(nameof(submitOrderCommand.PhoneNumber));
        }
Example #8
0
        public async Task <CommandResponse <Model.ShoppingCart> > ExecuteAsync(GetCartQuery command, CommandResponse <Model.ShoppingCart> previousResult)
        {
            Model.ShoppingCart cart = await _repository.GetActualOrDefaultAsync(command.AuthenticatedUserId);

            return(CommandResponse <Model.ShoppingCart> .Ok(cart));
        }
Example #9
0
 public Invoker()
 {
     _cartQuery      = new GetCartQuery();
     _commandFactory = new CommandFactory();
 }