public void VerificarAlteracaoValorIncorreto()
        {
            var pBiscoito = new Produto("Biscoito", 10.5);
            Exception ex = Assert.Throws<InvalidOperationException>(() => pBiscoito.MudarValor(-1));

            Assert.NotNull(ex);
        }
        public Produto Persistir(Produto modelo)
        {
            try
            {
                AssertionConcern.AssertArgumentNotNull(modelo, "Produto não preenchdo.");
                modelo.DtCadastro = DateTime.Now;
                modelo.ValidarAtributos();

                AssertionConcern.AssertArgumentFalse(_repositorioProduto.ProdutoJaExiste(modelo.Nome), "Produto com o mesmo nome já cadastrado na base");

                var criado =  _repositorioProduto.Persistir(modelo);
                _repositorioProduto.ConfirmarAlteracoes();
                return criado;
            }
            catch (Exception e)
            {
                throw new Exception($"Não foi possível criar o cliente.\n{e.Message}");
            }
        }
        public void Atualizar(Produto modelo)
        {
            AssertionConcern.AssertArgumentNotNull(modelo, "Produto não preenchido.");
            AssertionConcern.AssertArgumentMinimum(modelo.ProdutoID, 1, "Produto desconhecido não pôde ser atualizado");
            modelo.ValidarAtributos();

            var produto = _repositorioProduto.BuscarPorID(modelo.ProdutoID);
            AssertionConcern.AssertArgumentNotNull(produto, "Produto desconhecido não pôde ser atualizado");

            produto.MudarNome(modelo.Nome);
            produto.MudarValor(modelo.Valor);

            try
            {
                _repositorioProduto.Atualizar(produto);
                _repositorioProduto.ConfirmarAlteracoes();
            }
            catch (Exception e)
            {
                throw new Exception($"Cliente não pôde ser atualizado.\n{e.Message}");
            }
        }