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); }
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 }); }