public void Can_Submit_And_Process_Card_Transfer()
        {
            var user = AuthenticateTerminator();
            user.Profile.SmsConfirmationEnabled = false;
            var transferService = Scope.Resolve<ICardTransferClientService>();
            var cardAccountService = Scope.Resolve<ICardAccountService>();
            var transferRepository = Scope.Resolve<IRepository<Transfer>>();
            var processingService = Scope.Resolve<IProcessingService>();

            var cards = cardAccountService.GetUserCards(new CardQuery())
                .Where(x => x.AccountNo != null)
                .ToList();
            var command = new InterbankCardTransferCommand
            {
                FromCardId = cards.First(x => x.Owner.UserId == user.Id).CardId,
                ToCardNo = cards.First(x => x.Owner.UserId != user.Id).CardNo,
                ToCardExpirationDateUtc = cards[1].ExpirationDateUtc,
                Amount = 10
            };

            var operation = transferService.Transfer(command);
            var command2 = new ProcessBankOperationCommand
            {
                BankOperationId = operation.Id
            };
            var nextState = processingService.ProcessBankOperation(command2);
            var transfer = transferRepository.Find(command2.BankOperationId);
            processingService.ProcessTransaction(new ProcessTransactionCommand
            {
                OperationId = command2.BankOperationId,
                TransactionId = transfer.Withdrawal.Id
            });
            nextState = processingService.ProcessBankOperation(command2);
            processingService.ProcessTransaction(new ProcessTransactionCommand
            {
                OperationId = command2.BankOperationId,
                TransactionId = transfer.Deposit.Id
            });
            nextState = processingService.ProcessBankOperation(command2);
            transfer = transferRepository.Find(command2.BankOperationId);
            Assert.AreEqual(ProcessStatus.Completed, transfer.Status);
        }
        public void Can_Submit_Card_Transfer()
        {
            var user = AuthenticateTerminator();
            user.Profile.SmsConfirmationEnabled = false;
            var transferService = Scope.Resolve<ICardTransferClientService>();
            var cardAccountService = Scope.Resolve<ICardAccountService>();

            var cards = cardAccountService.GetUserCards(new CardQuery())
                .Where(x => x.AccountNo != null)
                .ToList();
            var command = new InterbankCardTransferCommand
            {
                FromCardId = cards.First(x => x.Owner.UserId == user.Id).CardId,
                ToCardNo = cards.First(x => x.Owner.UserId != user.Id).CardNo,
                ToCardExpirationDateUtc = cards[1].ExpirationDateUtc,
                Amount = 10
            };

            transferService.Transfer(command);
        }
Example #3
0
 public IHttpActionResult Interbank(InterbankCardTransferCommand command)
 {
     _transferService.Transfer(command);
     return StatusCode(HttpStatusCode.Accepted);
 }