예제 #1
0
        public async Task <Guid> AlterarAsync(Guid aggregateId, AlterarProdutoDto dto)
        {
            var command = new AlterarProdutoCommand(aggregateId, dto.Nome, dto.Preco);

            await _dispatcher.DispatchAsync(command);

            await _unitOfWork.CommitAsync();

            return(aggregateId);
        }
        public async Task QuandoAlterarProdutoComDadosValidosEntaoOProdutoDeveSerAlterado()
        {
            //Arrange
            var produto     = ProdutoRepositorioTest.GetByDescricao("Produto1");
            var commandTest = new AlterarProdutoCommand(produto.Id, "Produto1Teste", 1, 1);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

            //Act
            var result = await handler.Handle(commandTest, CancellationToken.None);

            //Assert
            var produtoAtualizado = ProdutoRepositorioTest.GetById(Guid.Parse(result));

            Assert.NotNull(produtoAtualizado);
            Assert.Equal("Produto1Teste", produtoAtualizado.ProdutoDescricao);
            Assert.Equal(1, produtoAtualizado.ProdutoValor);
            Assert.Equal(1, produtoAtualizado.ProdutoQtdEstoque);
        }
예제 #3
0
        public async Task <ActionResult> Alterar([FromBody] ProdutoViewModel produto)
        {
            Guid guidAux;

            if (Guid.TryParse(produto.Id, out guidAux))
            {
                var command = new AlterarProdutoCommand(guidAux, produto.Descricao, produto.Valor, produto.QuantidadeEmEstoque);
                var retorno = await Mediator.Send(command);

                if (!Guid.TryParse(retorno, out guidAux))
                {
                    return(BadRequest(retorno));
                }
                return(Ok(guidAux.ToString()));
            }

            return(BadRequest("Não foi possível converter o id em GUID"));
        }
        public async Task QuandoAlterarProdutoNaoExistenteEntaoOProdutoNaoDeveSerAlterado()
        {
            //Arrange
            var produto     = ProdutoRepositorioTest.GetByDescricao("Produto3");
            var commandTest = new AlterarProdutoCommand(Guid.NewGuid(), "Produto3", 1, 1);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

            //Act
            var result = await handler.Handle(commandTest, CancellationToken.None);

            //Assert
            var produtoAtualizado = ProdutoRepositorioTest.GetByDescricao("Produto3");

            Assert.NotNull(produtoAtualizado);
            Assert.Equal("Produto não encotrando para o id informado", result);
            Assert.Equal(produto.ProdutoDescricao, produtoAtualizado.ProdutoDescricao);
            Assert.Equal(produto.ProdutoValor, produtoAtualizado.ProdutoValor);
            Assert.Equal(produto.ProdutoQtdEstoque, produtoAtualizado.ProdutoQtdEstoque);
        }
        public async Task QuandoAlterarDescricaoProdutoParaDescricaoJaExistenteEntaoOProdutoNaoDeveSerAlterado()
        {
            //Arrange
            var produto     = ProdutoRepositorioTest.GetByDescricao("Produto3");
            var commandTest = new AlterarProdutoCommand(produto.Id, "Produto2", 1, 1);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

            //Act
            var result = await handler.Handle(commandTest, CancellationToken.None);

            //Assert
            var produtoAtualizado = ProdutoRepositorioTest.GetByDescricao("Produto3");

            Assert.NotNull(produtoAtualizado);
            Assert.Equal("Já existe produto com esta descrição", result);
            Assert.Equal(produto.ProdutoDescricao, produtoAtualizado.ProdutoDescricao);
            Assert.Equal(produto.ProdutoValor, produtoAtualizado.ProdutoValor);
            Assert.Equal(produto.ProdutoQtdEstoque, produtoAtualizado.ProdutoQtdEstoque);
        }
        public async Task QuandoAlterarProdutoComQtdEstoqueInvalidoEntaoOProdutoNaoDeveSerAlterado()
        {
            //Arrange
            var produto     = ProdutoRepositorioTest.GetByDescricao("Produto3");
            var commandTest = new AlterarProdutoCommand(produto.Id, "Produto3Teste", 1, -1);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

            //Act
            var result = await handler.Handle(commandTest, CancellationToken.None);

            //Assert
            var produtoAtualizado = ProdutoRepositorioTest.GetByDescricao("Produto3");

            Assert.NotNull(produtoAtualizado);
            Assert.Equal("Quantidade em estoque não pode ser negativa", result);
            Assert.Equal(produto.ProdutoDescricao, produtoAtualizado.ProdutoDescricao);
            Assert.Equal(produto.ProdutoValor, produtoAtualizado.ProdutoValor);
            Assert.Equal(produto.ProdutoQtdEstoque, produtoAtualizado.ProdutoQtdEstoque);
        }