public async Task ThenIShouldGetBackCorrectTransferTransactions()
        {
            //Arrange
            var transaction = new TransferTransactionLine
            {
                ReceiverAccountName = "Test Corp",
                TransactionType     = TransactionItemType.Transfer,
                Amount = 2035.20M
            };

            var expectedDescription = $"Transfer sent to {transaction.ReceiverAccountName}";

            _dasLevyService.Setup(x =>
                                  x.GetAccountTransactionsByDateRange(It.IsAny <long>(), It.IsAny <DateTime>(), It.IsAny <DateTime>()))
            .ReturnsAsync(new TransactionLine[]
            {
                transaction
            });

            //Act
            var actual = await RequestHandler.Handle(Query);

            //Assert
            var actualTransaction = actual.Data.TransactionLines.First();

            Assert.AreEqual(expectedDescription, actualTransaction.Description);
            Assert.AreEqual(transaction.Amount, actualTransaction.Amount);
        }
        public async Task ThenIShouldGetTransferReceiverPublicHashedId()
        {
            //Arrange
            var expectedPublicHashedId = "TTT222";

            var transaction = new TransferTransactionLine
            {
                ReceiverAccountId   = 3,
                ReceiverAccountName = "Test Corp",
                TransactionType     = TransactionItemType.Transfer,
                Amount = 2035.20M
            };

            _dasLevyService.Setup(x =>
                                  x.GetAccountTransactionsByDateRange(It.IsAny <long>(), It.IsAny <DateTime>(), It.IsAny <DateTime>()))
            .ReturnsAsync(new TransactionLine[]
            {
                transaction
            });

            _publicHashingService.Setup(x => x.HashValue(transaction.ReceiverAccountId))
            .Returns(expectedPublicHashedId);

            //Act
            var actual = await RequestHandler.Handle(Query);

            //Assert
            var actualTransaction = actual.Data.TransactionLines.First() as TransferTransactionLine;

            Assert.AreEqual(expectedPublicHashedId, actualTransaction?.ReceiverAccountPublicHashedId);
        }
Beispiel #3
0
        private static IEnumerable <TransferTransactionLine> CreateTransactions(IGrouping <long, AccountTransfer> senderTransferGroup)
        {
            if (!senderTransferGroup.Any())
            {
                return(new TransferTransactionLine[0]);
            }

            var firstTransfer = senderTransferGroup.First();

            var senderAccountId     = senderTransferGroup.Key;
            var senderAccountName   = firstTransfer.SenderAccountName;
            var receiverAccountId   = firstTransfer.ReceiverAccountId; //use key as we have grouped by receiver ID
            var receiverAccountName = firstTransfer.ReceiverAccountName;
            var transferTotal       = senderTransferGroup.Sum(gt => gt.Amount);
            var periodEnd           = firstTransfer.PeriodEnd;

            var senderTransferTransaction = new TransferTransactionLine
            {
                AccountId           = senderAccountId,
                Amount              = -transferTotal, //Negative value as we are removing money from sender
                DateCreated         = DateTime.Now,
                TransactionDate     = DateTime.Now,
                SenderAccountId     = senderAccountId,
                SenderAccountName   = senderAccountName,
                ReceiverAccountId   = receiverAccountId,
                ReceiverAccountName = receiverAccountName,
                PeriodEnd           = periodEnd
            };

            var receiverTransferTransaction = new TransferTransactionLine
            {
                AccountId           = receiverAccountId,
                Amount              = transferTotal, //Positive value as we are adding money to receiver
                DateCreated         = DateTime.Now,
                TransactionDate     = DateTime.Now,
                SenderAccountId     = senderAccountId,
                SenderAccountName   = senderAccountName,
                ReceiverAccountId   = receiverAccountId,
                ReceiverAccountName = receiverAccountName,
                PeriodEnd           = periodEnd
            };

            return(new[] { senderTransferTransaction, receiverTransferTransaction });
        }