public async Task Deve_Falhar_Quando_RegistrarNovoProtocolo_Retonar_Falha() { //Arrange var novoNumeroProtocolo = Guid.NewGuid().ToString(); var usuarioSolicitante = FakeData.SolicitarAtendimentoCommandValido; protocoloServico.GerarNumeroProtocolo() .Returns(_ => Result <string> .Ok(novoNumeroProtocolo)); protocoloServico.RegistrarNovoProtocolo(Arg.Any <Protocolo>()) .Returns(_ => Result.Fail("")); usuarioSolicitanteServico.ConsultarUsuarioSolicitantePorCPF(Arg.Any <string>()).Returns(_ => Result <UsuarioSolicitante> .Fail("")); mediator.Send(Arg.Any <RegistrarNovoUsuarioSolicitanteCommand>()) .Returns(_ => Result <RegistrarNovoUsuarioSolicitanteResponse> .Ok(new RegistrarNovoUsuarioSolicitanteResponse { EmailSolicitante = usuarioSolicitante.EmailSolicitante })); //Act var sut = new SolicitarAtendimentoHandler(mediator, protocoloServico, usuarioSolicitanteServico); var response = await sut.Handle(FakeData.SolicitarAtendimentoCommandValido, default(CancellationToken)).ConfigureAwait(false); //Assert protocoloServico.Received().RegistrarNovoProtocolo(Arg.Any <Protocolo>()).GetAwaiter(); Assert.Multiple(() => { Assert.IsNotNull(response); Assert.IsInstanceOf <Result <SolicitarAtendimentoResponse> >(response); Assert.IsNull(response.Value); Assert.IsTrue(response.IsFailure); Assert.AreEqual(1, response.Messages.Count); }); }
private async Task <Result <Protocolo> > RegistrarNovoProtocolo(UsuarioSolicitante usuarioResult, string gerarNumeroProtocoloResult) { try { var novoProtocoloResult = CriarNovoProtocolo(usuarioResult, gerarNumeroProtocoloResult); if (novoProtocoloResult.IsFailure) { return(Result <Protocolo> .Fail(novoProtocoloResult.Messages)); } var registrarNovoProtocoloResult = await _protocoloServico.RegistrarNovoProtocolo(novoProtocoloResult.Value).ConfigureAwait(false); if (registrarNovoProtocoloResult.IsFailure) { return(Result <Protocolo> .Fail(registrarNovoProtocoloResult.Messages)); } return(Result <Protocolo> .Ok(novoProtocoloResult.Value)); } catch (Exception ex) { return(Result <Protocolo> .Fail("")); } }