コード例 #1
0
        public async Task <IActionResult> ObterCotacaoMoeda(long idCliente, Moeda?moeda, decimal quantidadeMoeda)
        {
            var request = new ObterCotacaoMoedaRequest
            {
                IdCliente       = idCliente,
                Moeda           = moeda.ToString(),
                QuantidadeMoeda = quantidadeMoeda
            };

            return(await ProcessarRequest(() => _app.ObterCotacaoMoeda(request)));
        }
コード例 #2
0
        public async Task <ObterCotacaoMoedaResponse> ObterCotacaoMoeda(ObterCotacaoMoedaRequest request)
        {
            if (new ObterCotacaoMoedaValidation(_clienteRepository, _notificacoes).Validar(request))
            {
                var cliente    = _clienteRepository.ObterClientePorId(request.IdCliente);
                var taxa       = _taxaRepository.ObterTaxaCambioPorSegmento(cliente.Segmento);
                var valorMoeda = await _exchangeRatesApiProxy.ObterUltimaCotacaoMoeda(request.Moeda);

                var operacao = new OperacaoCambio(cliente, taxa);

                operacao.DefinirMoedaOperacao(request.Moeda, valorMoeda);

                operacao.CalcularValorOperacao(request.QuantidadeMoeda);

                return(operacao.ToResponse(request.QuantidadeMoeda));
            }
            return(null);
        }
コード例 #3
0
        public void ObterCotacaoMoeda_IdClienteInvalido_DeveRetornarMensagemDeValidacaoDoCodigoDeCliente()
        {
            //arrange
            var mocker    = new AutoMocker();
            var validador = mocker.CreateInstance <ObterCotacaoMoedaValidation>();

            mocker.GetMock <IClienteRepository>().Setup(r => r.ObterClientePorId(0)).Returns(default(Cliente));
            var request = new ObterCotacaoMoedaRequest()
            {
                IdCliente       = 0,
                Moeda           = Moeda.USD.ToString(),
                QuantidadeMoeda = 100
            };
            //act
            var valido = validador.Validar(request);

            //assert
            Assert.False(valido);
            Assert.Contains(mocker.GetMock <NotificacaoErro>().Object.Mensagens, m => m.Equals("IdCliente deve ser maior que 0"));
        }
コード例 #4
0
        public void ObterCotacaoMoeda_QuantidadeMoedaIgualAZero_DeveRetornarMensagemDeValidacaoMoeda()
        {
            //arrange
            var mocker    = new AutoMocker();
            var validador = mocker.CreateInstance <ObterCotacaoMoedaValidation>();

            mocker.GetMock <IClienteRepository>().Setup(r => r.ObterClientePorId(1)).Returns(new Cliente(1, "Teste", "12345678901", Domain.Enums.Segmento.Varejo));
            var request = new ObterCotacaoMoedaRequest()
            {
                IdCliente       = 1,
                Moeda           = Moeda.USD.ToString(),
                QuantidadeMoeda = 0
            };
            //act
            var valido = validador.Validar(request);

            //assert
            Assert.False(valido);
            Assert.Contains(mocker.GetMock <NotificacaoErro>().Object.Mensagens, m => m.Equals("Quantidade de moeda deve ser maior que 0"));
        }
コード例 #5
0
        public void ObterCotacaoMoeda_MoedaInvalida_DeveRetornarMensagemDeValidacaoDeMoedaInvalida()
        {
            //arrange
            var mocker    = new AutoMocker();
            var validador = mocker.CreateInstance <ObterCotacaoMoedaValidation>();

            mocker.GetMock <IClienteRepository>().Setup(r => r.ObterClientePorId(10)).Returns(default(Cliente));
            var request = new ObterCotacaoMoedaRequest()
            {
                IdCliente       = 10,
                Moeda           = "A",
                QuantidadeMoeda = 100
            };
            //act
            var valido = validador.Validar(request);

            //assert
            Assert.False(valido);
            Assert.Contains(mocker.GetMock <NotificacaoErro>().Object.Mensagens, m => m.Equals("Moeda informada é inválida"));
        }
コード例 #6
0
        public void ObterCotacaoMoeda_MoedaVazia_DeveRetornarMensagemDeValidacaoDeMoedaNula()
        {
            //arrange
            var mocker    = new AutoMocker();
            var validador = mocker.CreateInstance <ObterCotacaoMoedaValidation>();

            mocker.GetMock <IClienteRepository>().Setup(r => r.ObterClientePorId(10)).Returns(new Cliente(1, "Teste", "12345678901", Domain.Enums.Segmento.Varejo));
            var request = new ObterCotacaoMoedaRequest()
            {
                IdCliente       = 10,
                Moeda           = string.Empty,
                QuantidadeMoeda = 100
            };
            //act
            var valido = validador.Validar(request);

            //assert
            Assert.False(valido);
            Assert.Contains(mocker.GetMock <NotificacaoErro>().Object.Mensagens, m => m.Equals("Moeda não pode ser vazia"));
        }