public void TestDeConversaoDeMoeda()
        {
            Mock <IMoedaFactory>        moedaFactoryMock = new Mock <IMoedaFactory>();
            Mock <IConversorACL>        aclMck           = new Mock <IConversorACL>();
            Mock <IConversorACLFactory> aclFactoryMck    = new Mock <IConversorACLFactory>();

            ConverterMoedaRequest request = new ConverterMoedaRequest()
            {
                SiglaMoedaOrigem   = "BRL",
                MoedaParaConversao = "USD",
                ValorParaConversao = 1M
            };

            IMoeda moedaOrigem = new Moeda(request.SiglaMoedaOrigem, request.ValorParaConversao);

            aclMck.Setup(x => x.GetCotacaoComBaseNoDolar(request.SiglaMoedaOrigem)).Returns(new Moeda("BRL", 3.84M));
            aclMck.Setup(x => x.GetCotacaoComBaseNoDolar(request.MoedaParaConversao)).Returns(new Moeda("USD", 1));

            aclFactoryMck.Setup(x => x.Create()).Returns(aclMck.Object);
            moedaFactoryMock.Setup(x => x.Create("BRL", 1m)).Returns(moedaOrigem);
            IMoeda MoedaParaConversao = new Moeda("USD", 0.25M);

            moedaFactoryMock.Setup(x => x.Create("USD", It.IsAny <Decimal>())).Returns(MoedaParaConversao);
            IConversorService service = new ConversorService(aclFactoryMck.Object, moedaFactoryMock.Object);
            var result = service.ConverterMoeda(request);

            Assert.True(result != null);
            Assert.True(result.valor.Equals(MoedaParaConversao.Valor));

            aclMck.VerifyAll();
            aclFactoryMck.VerifyAll();
        }
        public void TestDeConversaoDeMoedaAPIExternaComCotacaoNoCache()
        {
            IMoeda MoedaDolar = new Moeda("USD", 1);
            IMoeda MoedaReal  = new Moeda("BRL", 3.85M);
            Mock <IDistributedCache>    mckcache = new Mock <IDistributedCache>();
            Mock <IConfigurationHelper> mckconfigurationHelper = new Mock <IConfigurationHelper>();

            mckconfigurationHelper.Setup(x => x.GetSection("ACCESS_KEY")).Returns("?access_key=1503440cbd4d453ce74962abd00a82c2");
            mckconfigurationHelper.Setup(x => x.GetSection("BASE_URL")).Returns("http://apilayer.net/api/");

            RedisConnectorHelperFactory redisHelperFactory = new RedisConnectorHelperFactory(mckcache.Object);
            IRedisConnectorHelper       redisHelper        = redisHelperFactory.Create();

            mckcache.Setup(x => x.Get("GetCotacaoComBaseNoDolarBRL")).Returns(Serialize(MoedaReal));
            mckcache.Setup(x => x.Get("GetCotacaoComBaseNoDolarUSD")).Returns(Serialize(MoedaDolar));
            IConversorService     service = new ConversorService(new ConversorACLFactory(new MoedaFactory(), new RedisConnectorHelperFactory(mckcache.Object), mckconfigurationHelper.Object), new MoedaFactory());
            ConverterMoedaRequest request = new ConverterMoedaRequest()
            {
                SiglaMoedaOrigem   = "BRL",
                MoedaParaConversao = "USD",
                ValorParaConversao = 1M
            };

            var result = service.ConverterMoeda(request);

            Assert.True(result != null);
            Assert.True(result.valor > 0 || result.valor < 0);
        }
        public dynamic ConverterMoeda(String SiglaMoedaOrigem, String MoedaParaConversao, Decimal ValorParaConversao)
        {
            ConverterMoedaRequest request = new ConverterMoedaRequest()
            {
                SiglaMoedaOrigem   = SiglaMoedaOrigem,
                MoedaParaConversao = MoedaParaConversao,
                ValorParaConversao = ValorParaConversao
            };

            return(conversorService.ConverterMoeda(request));
        }
示例#4
0
        public ConverterMoedaResult ConverterMoeda(ConverterMoedaRequest converterMoedaRequest)
        {
            IConversorACL conversorACL = conversorACLFactory.Create();

            IMoeda MoedaOrigem = moedaFactory.Create(converterMoedaRequest.SiglaMoedaOrigem, converterMoedaRequest.ValorParaConversao);
            IMoeda CotacaoEmDolarMoedaOrigem = conversorACL.GetCotacaoComBaseNoDolar(MoedaOrigem.SiglaMoeda);
            IMoeda dinhieroOrigemEmDolar     = MoedaOrigem.ConverterParaDolar(CotacaoEmDolarMoedaOrigem);

            IMoeda  CotacaoEmDolarMoedaConvertida = conversorACL.GetCotacaoComBaseNoDolar(converterMoedaRequest.MoedaParaConversao);
            Decimal valorDaConversao    = dinhieroOrigemEmDolar.ObterValorDaConversaoDeMoeda(CotacaoEmDolarMoedaConvertida);
            IMoeda  MoedaConvertida     = moedaFactory.Create(converterMoedaRequest.MoedaParaConversao, valorDaConversao);
            ConverterMoedaResult result = new ConverterMoedaResult()
            {
                siglaMoeda = MoedaConvertida.SiglaMoeda,
                valor      = MoedaConvertida.Valor
            };

            return(result);
        }