public void Quando_adicionar_produto_valido_CadastrarProduto_no_servico_de_aplicacao()
        {
            // arrange
            var viewModel = new ProdutoViewModel();

            // act
            controller.Adicionar(viewModel);

            // assert
            mockIServicoDeAplicacaoDeProduto.Verify(x => x.CadastrarProduto(It.IsAny<Produto>()),
                Times.Once());
        }
        public void Quando_adicionar_produto_devolver_erro()
        {
            // arrange
            var viewModel = new ProdutoViewModel();
            controller.ModelState.AddModelError("", "Erro qualquer.");

            // act
            var viewResult = controller.Adicionar(viewModel) as ViewResult;

            // assert
            Assert.IsNotNull(viewResult.Model);
            Assert.IsInstanceOfType(viewResult.Model, typeof(ProdutoViewModel));
        }
        public ActionResult Adicionar(ProdutoViewModel produtoViewModel)
        {
            if (ModelState.IsValid)
            {
                var produto = new Produto(nome: produtoViewModel.Nome, preço: produtoViewModel.Preco);

                try
                {
                    _servicoDeAplicacaoDeProduto.CadastrarProduto(produto);
                    return RedirectToAction("Listar");
                }
                catch (ProdutoException exception)
                {
                    ModelState.AddModelError("Validação",exception.Message);
                    return View(produtoViewModel);
                }
            }

            return View(produtoViewModel);
        }
 public ActionResult Adicionar()
 {
     var produto = new ProdutoViewModel();
     return View(produto);
 }