public async Task Pedido_QuandoSalvarPedido_DeveExistirNoBancoDados() { //Arrange var usuario = Usuario.Criar("test", "test@email", 0, 0, UsuarioRole.Cliente); usuario.AdicionarPassword("password"); usuario.AdicionarRefreshToken("refreshToken", DateTime.Now.AddDays(1)); await _context.AddAsync(usuario); var pedido = Pedido.Criar(999, 1000, usuario); //Act await _pedidoRepository.AdicionarAsync(pedido); await _context.SaveChangesAsync(); //Assert Assert.True(_context.Set <Pedido>().Any(x => x.Peso == 999)); Assert.True(_context.Set <Pedido>().Any(x => x.UsuarioId == pedido.UsuarioId)); }
public async Task Pedido_QuandoSalvarPedido_DeveExistirNoBancoDados() { //Arrange var usuario = Usuario.Criar("test", "test@email", 0, 0, UsuarioRole.Cliente); usuario.AdicionarPassword("password"); usuario.AdicionarRefreshToken("refreshToken", DateTime.Now.AddDays(1)); await _context.AddAsync(usuario); var pedido = Pedido.Criar(Guid.NewGuid(), 999, 1000, usuario); pedido.CarregarUsuario(usuario); //Act await _pedidoRepository.AdicionarAsync(pedido); //Assert var pedidoResult = _contextMongo.Pedidos.Find(x => x.Id == pedido.Id).FirstOrDefault();; Assert.Equal(pedido.Peso, pedidoResult.Peso); Assert.Equal(pedido.UsuarioId, pedidoResult.UsuarioId); }
public async Task <IActionResult> AdicionarItem(AdicionarItemProdutoViewModel viewModel) { var pedido = await _pedidoRepository.ObterPedidoEmRascunhoAsync(); var produto = await _produtoRepository.ObterPorIdAsync(viewModel.ProdutoId); if (produto is null) { return(BadRequest("O produto não existe")); } var itemPedido = new ItemPedido(produto.Id, produto.Nome, viewModel.Quantidade, produto.Preco); if (pedido is null) { pedido = new Pedido(); pedido.AdicionarItem(itemPedido); await _pedidoRepository.AdicionarAsync(pedido); } else { bool itemExistente = pedido.ItemPedidoExistente(itemPedido); pedido.AdicionarItem(itemPedido); if (itemExistente) { _pedidoRepository.AtualizarItem(pedido.ItensPedido.SingleOrDefault(p => p.ProdutoId == itemPedido.ProdutoId)); } else { await _pedidoRepository.AdicionarItemAsync(itemPedido); } _pedidoRepository.Atualizar(pedido); } try { await _unitOfWork.CommitAsync(); } catch (Exception e) { return(BadRequest("Ocorreu um erro ao adicionar o item ")); } return(Ok()); }