示例#1
0
        public async Task DeveRetornarErroSeProdutoJaExisteNoBanco()
        {
            var handler = new ProdutoCommandHandler(_produtoRepository, _mediator);
            var command = new CriarProdutoCommand(_helperEntitiesTest.Nome.Nome, 10.25m);

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.Equal(Guid.Empty, retorno);
        }
        public async Task QuandoAdicionarProdutoComDescricaoJaExistenteEntaoOProdutoNaoDeveSerSalvo()
        {
            //Arrange
            var commandTest = new AdicionarProdutoCommand("Produto1", 10, 10);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

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

            //Assert
            var entity = ProdutoRepositorioTest.GetByDescricao(commandTest.ProdutoDescricao);

            Assert.NotNull(entity);
            Assert.Equal("Já existe produto com esta descrição", result);
        }
        public async Task QuandoAdicionarProdutoComQtdEstoqueInvalidoEntaoOProdutoNaoDeveSerSalvo()
        {
            //Arrange
            var commandTest = new AdicionarProdutoCommand("Produto6", 10, -10);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

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

            //Assert
            var entity = ProdutoRepositorioTest.GetByDescricao(commandTest.ProdutoDescricao);

            Assert.Null(entity);
            Assert.Equal("Quantidade em estoque não pode ser negativa", result);
        }
        public async Task QuandoAdicionarProdutoComValorInvalidoEntaoOProdutoNaoDeveSerSalvo()
        {
            //Arrange
            var commandTest = new AdicionarProdutoCommand("Produto5", -1, 1);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

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

            //Assert
            var entity = ProdutoRepositorioTest.GetByDescricao(commandTest.ProdutoDescricao);

            Assert.Null(entity);
            Assert.Equal("Valor do produto não pode ser negativo", result);
        }
        public async Task QuandoAdicionarProdutoValidoEntaoOProdutoDeveSerSalvo()
        {
            //Arrange
            var commandTest = new AdicionarProdutoCommand("Produto4", 120, 12);
            var handler     = new ProdutoCommandHandler(ProdutoRepositorioTest);

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

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

            Assert.NotNull(entity);
            Assert.Equal("Produto4", entity.ProdutoDescricao);
            Assert.Equal(120, entity.ProdutoValor);
            Assert.Equal(12, entity.ProdutoQtdEstoque);
        }
        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);
        }
        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);
        }