public async Task <Guid> Handle(AdicionarProdutoPedidoCommand request, CancellationToken cancellationToken) { var pedido = _pedidoRepository.GetEntityById(request.IDPedido); if (pedido == null) { request.AddNotification("AdicionarProdutoPedidoCommand", $"pedido ({request.IDPedido}) não encontrado no banco de dados."); } var produtoPedido = new ProdutoPedido(request.IDProduto, request.Quantidade); produtoPedido.VincularAoPedido(request.IDPedido); if (produtoPedido.Invalid || request.Invalid) { produtoPedido.AddNotifications(request.Notifications); await _mediator.Publish(new DomainNotification { Erros = request.Notifications }, cancellationToken); return(await Task.FromResult(Guid.Empty)); } _produtoPedidoRepository.Add(produtoPedido); return(await Task.FromResult(produtoPedido.Id)); }
public async Task DeveRetornarErroQuantidadeProdutoIncorretaAdicionarProdutoPedido() { var handler = new PedidoCommandHandler( _pedidoRepository, _garcomRepository, _comandaRepository, _historicoPedidoRepository, _produtoPedidoRepository, _clienteRepository, _mediator); var command = new AdicionarProdutoPedidoCommand(Guid.NewGuid(), Guid.NewGuid(), 0); var retorno = await handler.Handle(command, new CancellationToken()); Assert.Equal(Guid.Empty, retorno); }
public async Task DeveRetornarErroSePedidoNaoExistirAoAdicionarProdutoPedido() { var handler = new PedidoCommandHandler( _pedidoGetEntityNullRepository, _garcomRepository, _comandaRepository, _historicoPedidoRepository, _produtoPedidoRepository, _clienteRepository, _mediator); var command = new AdicionarProdutoPedidoCommand(Guid.NewGuid(), Guid.NewGuid(), 10); var retorno = await handler.Handle(command, new CancellationToken()); Assert.Equal(Guid.Empty, retorno); }
public async Task <Guid> AdicionarProdutoPedido(Guid id, ProdutoPedidoViewModel viewModel) { var command = new AdicionarProdutoPedidoCommand(id, viewModel.IDProduto, viewModel.Quantidade); return(await _mediator.Send(command)); }