示例#1
1
        public async Task EfetuaPagamento_Test()
        {
            //Given
            var mocker           = new AutoMoqer();
            var baseExternalMock = mocker.Create <GatewayExternalService>();


            var Cartao = new AutoFaker <CartaoEntity>()
                         .RuleFor(fake => fake.Bandeira, fake => PagamentoBandeiraEnum.MasterCard)
                         .RuleFor(fake => fake.DataValidade, fake => fake.Date.Future(2))
                         .RuleFor(fake => fake.Tipo, fake => TipoCartaoEnum.Credito)
                         .Generate();

            var param = new AutoFaker <PagamentoEntity>()
                        .RuleFor(fake => fake.StatusPagamento, fake => fake.PickRandom <StatusPagamentoEnum>())
                        .RuleFor(fake => fake.Cartao, fake => Cartao)
                        .Generate();

            var expectResponse = new GatewayDTO
            {
                IdPedido        = param.IdPedido,
                StatusPagamento = StatusPagamentoEnum.Aprovado
            };

            var response = new GatewayExternalDTO
            {
                StatusPagamento = StatusPagamentoEnum.Aprovado
            };


            var externalContext = mocker.GetMock <IGatewayExternalContext>();

            externalContext.Setup(e => e.EfetuarPagamentoCartao(It.IsAny <GatewayCartaoParam>())).ReturnsAsync(response).Verifiable();

            //When
            var result = await baseExternalMock.EfetuaPagamento(param);

            //Then
            var comparison = new CompareLogic();

            externalContext.Verify(mock => mock.EfetuarPagamentoCartao(It.IsAny <GatewayCartaoParam>()), Times.Once());
            Assert.True(comparison.Compare(result, expectResponse).AreEqual);
        }
示例#2
0
        public async Task SinalizaStatusPagamento_Test()
        {
            //Given
            var mocker           = new AutoMoqer();
            var baseExternalMock = mocker.Create <DeliveryExternalService>();


            var param = new GatewayDTO
            {
                IdPedido        = Guid.NewGuid(),
                StatusPagamento = StatusPagamentoEnum.Aprovado
            };

            var response = Task.Factory.StartNew(() => string.Empty);



            var externalContext = mocker.GetMock <IDeliveryExternalContext>();

            externalContext.Setup(e => e.AtualizaStatusPagamento(It.IsAny <DeliveryExternalParam>())).Returns(response).Verifiable();

            //When
            await baseExternalMock.SinalizaStatusPagamento(param);

            //Then
            var comparison = new CompareLogic();

            externalContext.Verify(mock => mock.AtualizaStatusPagamento(It.IsAny <DeliveryExternalParam>()), Times.Once());
        }
        public async Task AddUsingRef_Test()
        {
            var mocker          = new AutoMoqer();
            var baseCommandMock = mocker.Create <PagamentoCommand>();


            var param = new AutoFaker <CartaoParam>()
                        .RuleFor(fake => fake.NumeroCartao, fake => "4539971947033886")
                        .RuleFor(fake => fake.CodSeguranca, fake => "254")
                        .RuleFor(fake => fake.DataValidade, fake => fake.Date.Future(2))
                        .RuleFor(fake => fake.Tipo, fake => TipoCartaoEnum.Credito)
                        .Generate();

            var returnGateway = new GatewayDTO
            {
                IdPedido        = param.IdPedido,
                StatusPagamento = StatusPagamentoEnum.Aprovado
            };

            var pagamentoResult = new AutoFaker <PagamentoEntity>().Generate();
            var expectResponse  = new List <string>();

            var pagamentoRepoMock = mocker.GetMock <IPagamentoRepository>();
            var gatewayMock       = mocker.GetMock <IGatewayExternalService>();

            var deliveryMock = mocker.GetMock <IDeliveryExternalService>();

            pagamentoRepoMock.Setup(r => r.AddUsingRef(It.IsAny <PagamentoEntity>())).Returns(Task.Factory.StartNew(() => string.Empty)).Verifiable();

            pagamentoRepoMock.Setup(r => r.GetByIDWithLoadRef(It.IsAny <Guid>())).ReturnsAsync(pagamentoResult).Verifiable();

            deliveryMock.Setup(r => r.SinalizaStatusPagamento(It.IsAny <GatewayDTO>())).Returns(Task.Factory.StartNew(() => string.Empty)).Verifiable();
            gatewayMock.Setup(r => r.EfetuaPagamento(It.IsAny <PagamentoEntity>())).ReturnsAsync(returnGateway).Verifiable();



            //When

            var result = await baseCommandMock.ProcessarPagamento(param);

            //Then

            pagamentoRepoMock.Verify(mock => mock.AddUsingRef(It.IsAny <PagamentoEntity>()), Times.Exactly(2));
            pagamentoRepoMock.Verify(mock => mock.GetByIDWithLoadRef(It.IsAny <Guid>()), Times.Once());

            deliveryMock.Verify(mock => mock.SinalizaStatusPagamento(It.IsAny <GatewayDTO>()), Times.Once());
            gatewayMock.Verify(mock => mock.EfetuaPagamento(It.IsAny <PagamentoEntity>()), Times.Once());

            var comparison = new CompareLogic();

            Assert.True(comparison.Compare(result, expectResponse).AreEqual);
        }
        /// <summary>
        /// Returns the gateway object.
        /// </summary>
        /// <param name="GatewayID">Unique identifier of the gateway</param>
        /// <returns>Gateway Details</returns>
        public async Task <GatewayDTO> GatewayGet(long GatewayID)
        {
            GatewayDTO retVal = null;

            try
            {
                retVal = await _httpService.GetAsAsync <GatewayDTO>("GatewayGet", string.Format("GatewayID={0}", GatewayID), false);
            }
            catch (Exception ex)
            {
                return(retVal);
            }

            return(retVal);
        }
 public async Task SinalizaStatusPagamento(GatewayDTO statusPagamento)
 {
     await _deliveryExternalContext.AtualizaStatusPagamento(statusPagamento.ConvertTo <DeliveryExternalParam>());
 }