private async Task Valida_Tratamento_De_Duplicidade_No_Google_Deve_Retornar_True()
        {
            // Arrange
            var funcionario = new FuncionarioEol(123456, "José da Silva", string.Empty, string.Empty);

            mediator.Setup(a => a.Send(It.IsAny <ExisteFuncionarioPorRfQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(false);

            var googleDuplicidadeException = new GoogleApiException(string.Empty, GoogleApiExceptionMensagens.Erro409EntityAlreadyExists);

            googleDuplicidadeException.HttpStatusCode = HttpStatusCode.Conflict;
            googleDuplicidadeException.Error          = new Google.Apis.Requests.RequestError
            {
                Code    = (int)HttpStatusCode.Conflict,
                Message = GoogleApiExceptionMensagens.Erro409EntityAlreadyExists
            };

            mediator.Setup(a => a.Send(It.IsAny <InserirFuncionarioGoogleCommand>(), It.IsAny <CancellationToken>()))
            .Throws(googleDuplicidadeException);

            mediator.Setup(a => a.Send(It.IsAny <IncluirUsuarioCommand>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(10);

            mediator.Setup(a => a.Send(It.IsAny <PublicaFilaRabbitCommand>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(true);

            var funcionarioJson = JsonConvert.SerializeObject(funcionario);
            var mensagem        = new MensagemRabbit(funcionarioJson);

            // Act
            var retorno = await inserirFuncionarioGoogleUseCase.Executar(mensagem);

            // Assert
            Assert.True(retorno);
        }
        private async Task Valida_Inclusao_De_Funcionario_Valido_Deve_Retornar_True()
        {
            // Arrange
            var funcionario = new FuncionarioEol(123456, "José da Silva", string.Empty, string.Empty);

            mediator.Setup(a => a.Send(It.IsAny <ExisteFuncionarioPorRfQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(false);

            mediator.Setup(a => a.Send(It.IsAny <InserirFuncionarioGoogleCommand>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(true);

            mediator.Setup(a => a.Send(It.IsAny <IncluirUsuarioCommand>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(10);

            mediator.Setup(a => a.Send(It.IsAny <PublicaFilaRabbitCommand>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(true);

            var funcionarioJson = JsonConvert.SerializeObject(funcionario);
            var mensagem        = new MensagemRabbit(funcionarioJson);

            // Act
            var retorno = await inserirFuncionarioGoogleUseCase.Executar(mensagem);

            // Assert
            Assert.True(retorno);
        }
        public void Valida_Geracao_Email_Invalido_Passando_O_Resultado_Esperado(long rf, string nomePessoa, string nomeSocial, string organizationPath, string emailEsperado)
        {
            // Arrange
            var funcionario = new FuncionarioEol(rf, nomePessoa, nomeSocial, organizationPath);

            // Assert
            Assert.NotEqual(emailEsperado, funcionario.Email);
        }
 private async Task IncluirFuncionarioComErroAsync(FuncionarioEol funcionarioParaIncluirGoogle, string mensagem)
 {
     var funcionarioComErro = new IncluirUsuarioErroCommand(
         funcionarioParaIncluirGoogle.Rf,
         funcionarioParaIncluirGoogle.Email,
         mensagem,
         UsuarioTipo.Funcionario,
         ExecucaoTipo.FuncionarioAdicionar);
     await mediator.Send(funcionarioComErro);
 }
        public void Valida_Definicao_Do_Nome_E_Email_Valido_Passando_Os_Resultados_Esperados(long rf, string nomePessoa, string nomeSocial, string nomeEsperado, string emailEsperado)
        {
            // Arrange
            var funcionarioEol = new FuncionarioEol(rf, nomePessoa, nomeSocial, string.Empty);

            // Assert
            Assert.NotNull(funcionarioEol);
            Assert.Equal(nomeEsperado, funcionarioEol.Nome);
            Assert.Equal(emailEsperado, funcionarioEol.Email);
        }
        private async Task Valida_Tratamento_De_Duplicidade_No_Google_Deve_Devolver_A_GoogleApiExption_Disparada()
        {
            // Arrange
            var funcionario = new FuncionarioEol(123456, "José da Silva", string.Empty, string.Empty);

            mediator.Setup(a => a.Send(It.IsAny <ExisteFuncionarioPorRfQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(false);

            var googleException = new GoogleApiException(string.Empty, "Erro no Google Classroom.");

            mediator.Setup(a => a.Send(It.IsAny <InserirFuncionarioGoogleCommand>(), It.IsAny <CancellationToken>()))
            .Throws(googleException);

            var funcionarioJson = JsonConvert.SerializeObject(funcionario);
            var mensagem        = new MensagemRabbit(funcionarioJson);

            // Assert
            await Assert.ThrowsAsync <GoogleApiException>(() => inserirFuncionarioGoogleUseCase.Executar(mensagem));
        }
        private async Task Valida_Tratamento_De_Excecoes_Ao_Comunicar_Com_Google_Deve_Devolver_A_Excecao_Disparada()
        {
            // Arrange
            var funcionario = new FuncionarioEol(123456, "José da Silva", string.Empty, string.Empty);

            mediator.Setup(a => a.Send(It.IsAny <ExisteFuncionarioPorRfQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(false);

            var excecao = new NullReferenceException("Erro ao se comunicar Google Classroom.");

            mediator.Setup(a => a.Send(It.IsAny <InserirFuncionarioGoogleCommand>(), It.IsAny <CancellationToken>()))
            .Throws(excecao);

            var funcionarioJson = JsonConvert.SerializeObject(funcionario);
            var mensagem        = new MensagemRabbit(funcionarioJson);

            // Assert
            await Assert.ThrowsAsync <NullReferenceException>(() => inserirFuncionarioGoogleUseCase.Executar(mensagem));
        }