public void Deve_Retornar_Excecao_Ao_Personalizar_Um_Pedido_Com_Personalizacao_Ja_Adicionada_No_Pedido() { pedidoRepository.GetById(Arg.Any <int>()).Returns(pedido); adicionaisPizzaRepository.GetAll().Returns(new List <AdicionaisPizza> { adicionalPizza }); adicionaisPedidoRepository.ExisteAdicionalCadastroNoPedido(Arg.Any <int>(), Arg.Any <int>()).Returns(true); Assert.Throws <Exception>( () => new PersonalizacaoPedidoBusiness(pedidoRepository, adicionaisPizzaRepository, tamanhosPizzaRepository, saboresPizzaRepository, adicionaisPedidoRepository, mapper).PersonalizarPedido(personalizacaoPedidoDto), "Não deve ser possível adicionar a personalização ao pedido!"); }
public ResumoPedidoDto PersonalizarPedido(PersonalizacaoPedidoDto personalizacaoPedido) { var identificadorPedido = personalizacaoPedido.IdentificadorPedido; var pedido = _pedidoRepository.GetById(identificadorPedido); if (pedido == null) { throw new Exception($"O pedido {identificadorPedido} não existe!"); } if (pedido.Finalizado.GetValueOrDefault(true)) { throw new Exception($"O pedido já esta finalizado não é possível adicionar incrementos!"); } var adicionalPizza = personalizacaoPedido.AdicionalPizza; var personalizacaoPizza = _adicionaisPizzaRepository.GetAll() .FirstOrDefault(x => x.Adicional.ToUpper() == adicionalPizza.ToUpper()); if (personalizacaoPizza == null) { throw new Exception($"A personalização {adicionalPizza} informada não esta cadastrada!"); } if (_adicionaisPedidoRepository.ExisteAdicionalCadastroNoPedido(identificadorPedido, personalizacaoPizza.Id)) { throw new Exception($"A personalização {adicionalPizza} informada já esta cadastrada no pedido!"); } pedido.Total += personalizacaoPizza.Valor ?? 0; pedido.Tempo += personalizacaoPizza.Tempo ?? 0; pedido.TamanhosPizza = _tamanhosPizzaRepository.GetById(pedido.TamanhosPizzaId); pedido.SaboresPizza = _saboresPizzaRepository.GetById(pedido.SaboresPizzaId); pedido.AdicionaisPedido = _adicionaisPedidoRepository.BuscarAdicionaisPorPedido(identificadorPedido); pedido.AdicionaisPedido.Add(new AdicionaisPedido { AdicionaisPizza = personalizacaoPizza, Pedidos = pedido }); _pedidoRepository.Update(pedido); var resumoPedido = _mapper.Map <ResumoPedidoDto>(pedido); return(resumoPedido); }