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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }