public async Task deve_retornar_sucesso_quando_editar_pretendente() { //arrange var comando = new EditarPretendenteCommand(Guid.NewGuid(), "Nome do pretendente atualizado"); var evento = new PretendenteEditadoEvent(comando.Id, comando.Nome); var pretendenteDb = new Pretendente("Nome do pretendente", "*****@*****.**"); _bus.Setup(p => p.Publish(It.IsAny <PretendenteEditadoEvent>(), _cancellationToken)) .Callback <PretendenteEditadoEvent, CancellationToken> ((re, ca) => { evento = re; _cancellationToken = ca; }); _pretendenteRepositorio.Setup(p => p.ObterAsync(comando.Id)).ReturnsAsync(pretendenteDb); _pretendenteRepositorio.Setup(p => p.AtualizarAsync(pretendenteDb)).Returns(Task.CompletedTask); //act var resultado = await _handler.Handle(comando, _cancellationToken); //assert Assert.True(resultado.Sucesso); Assert.Equal(resultado.StatusCode, HttpStatusCode.OK); Assert.Equal(comando.Nome, pretendenteDb.Nome); Assert.Equal(resultado.Mensagem, "Operação realizada com sucesso."); _pretendenteRepositorio.Verify(p => p.AtualizarAsync(It.IsAny <Pretendente>()), Times.Once); _bus.Verify(p => p.Publish(evento, _cancellationToken), Times.Once); }
public async Task <RequestResult> Handle(EditarPretendenteCommand request, CancellationToken cancellationToken) { var pretendenteDb = await _pretendenteRepositorio.ObterAsync(request.Id); if (pretendenteDb == null) { _logger.LogError($"[Editar pretendente] - pretendente {request.Id} não encontrato."); return(new RequestResult().NotFound()); } pretendenteDb.AtualizarNome(request.Nome); var validate = new PretendenteValidator(_pretendenteRepositorio).Validate(pretendenteDb); if (!validate.IsValid) { _logger.LogError("[Editar pretendente] - " + validate.Errors.FirstOrDefault().ErrorMessage); return(new RequestResult().BadRequest(validate.Errors.Select(p => p.ErrorMessage).ToArray())); } await _pretendenteRepositorio.AtualizarAsync(pretendenteDb); await _bus.Publish(new PretendenteEditadoEvent(request.Id, request.Nome), cancellationToken); return(new RequestResult().Ok()); }
public async Task <IActionResult> Put(Guid id, [FromBody] EditarPretendenteCommand model, CancellationToken cancellationToken) { if (ModelState.IsValid) { model.Id = id; return(RetornarRequestResult(await _bus.Send(model, cancellationToken))); } return(BadRequest(model)); }
public async Task deve_retornar_badrequest_quando_comando_invalido() { //arrange var id = Guid.NewGuid(); var comando = new EditarPretendenteCommand(id, "Nome do Pretendente"); _bus.Setup(p => p.Send(comando, _cancellationToken)).ReturnsAsync(new RequestResult().NotFound()); //act var resultado = await _controller.Put(id, comando, _cancellationToken); //assert Assert.IsType <NotFoundObjectResult>(resultado); _bus.Verify(p => p.Send(comando, _cancellationToken), Times.Once); }
public async Task deve_retornar_erro_quando_nao_encontrar_pretendente() { //arrange var comando = new EditarPretendenteCommand(Guid.NewGuid(), "Nome do pretendente atualizado"); Pretendente pretendente = null; _pretendenteRepositorio.Setup(p => p.ObterAsync(comando.Id)).ReturnsAsync(pretendente); //act var resultado = await _handler.Handle(comando, _cancellationToken); //assert Assert.False(resultado.Sucesso); Assert.Equal(resultado.StatusCode, HttpStatusCode.NotFound); Assert.Equal(resultado.Mensagem, "Objeto não encontrado."); _pretendenteRepositorio.Verify(p => p.AtualizarAsync(It.IsAny <Pretendente>()), Times.Never); _bus.Verify(p => p.Publish(It.IsAny <PretendenteEditadoEvent>(), _cancellationToken), Times.Never); }