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); }
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")); } }
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)); }
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)); }
public Invoker() { _cartQuery = new GetCartQuery(); _commandFactory = new CommandFactory(); }