Files
2026-03-31 14:32:23 -05:00

202 lines
9.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Castle.Core.Internal;
using Moq;
using NUnit.Framework;
using LCU.Api.Internal.CoreApiWrapper.Services;
using LCU.Library.Internal.CoreApiWrapperLib.DataAccess;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Transaction;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Accounts;
namespace LCU.Api.Internal.CoreApiWrapperTest.Service
{
public class TransactionServiceTest
{
private TransactionService _transactionService;
private Mock<ITransactionDao> _mockTransactionDao;
private Mock<IAccountService> _mockAccountService;
[SetUp]
public void SetUp()
{
_mockTransactionDao = new Mock<ITransactionDao>();
_mockAccountService = new Mock<IAccountService>();
_transactionService = new TransactionService(_mockTransactionDao.Object, _mockAccountService.Object);
}
[Test]
public async Task GetTransactionHistory_Return_Two()
{
var setupAccountNumber = 8675309143;
var accountResponse = new Account()
{
Id="fasdfsda;fjsdipfu0-231231"
};
_mockAccountService.Setup(x => x.GetAccountDetails(It.IsAny<CoreRequestParameters>(),
It.IsAny<AcctNbrRequest>())).ReturnsAsync(accountResponse).Verifiable();
_mockTransactionDao
.Setup(x => x.FindTransactionHistoryById(It.IsAny<CoreRequestParameters>(), It.IsAny<TransactionHistoryRequest>(), It.IsAny<string>()))
.ReturnsAsync(
new List<TransactionHistory>()
{
new TransactionHistory()
{
AccountNumber = setupAccountNumber,
ActivityDateTime = Convert.ToDateTime("1/1/2021"),
AllowCustomerView = true,
Amount = 220,
BalanceAccountNumber = 2,
BalanceTypeDescription = "Note Interest (Excess)",
CurrTransactionStatusCode = "C",
DueDate = null,
EffectiveDate = "2021-10-14",
ExternalTransactionDescription = null,
Id = "22",
IsDisputedTransaction = false,
OnlineCheckTraceNumber = 0,
PostingDate = "2021-10-15",
RunningBalance = (decimal?)3529.53,
TimeUniqueNumber = 86570239,
TransactionNumber = 22,
TransactionReference = $"{setupAccountNumber} - 22",
TransactionStatusDescription = "Completed",
TransactionTypeCode = "SPMT",
TransactionTypeDescription = "Regular Payment LandmarkCU TRANSFER 12345",
Uid = "abcd77299_sABCDMD]MYo5crdZyPN3s2QAHx[CHxgigabcdeYuALuVGL9Jklm_22"
},
new TransactionHistory()
{
AccountNumber = setupAccountNumber,
ActivityDateTime = Convert.ToDateTime("1/2/2021"),
AllowCustomerView = true,
Amount = 30,
BalanceAccountNumber = 2,
BalanceTypeDescription = "Note Interest (Excess)",
CurrTransactionStatusCode = "C",
DueDate = null,
EffectiveDate = "2021-10-14",
ExternalTransactionDescription = null,
Id = "23",
IsDisputedTransaction = false,
OnlineCheckTraceNumber = 0,
PostingDate = "2021-10-15",
RunningBalance = (decimal?)3559.53,
TimeUniqueNumber = 86570239,
TransactionNumber = 23,
TransactionReference = $"{setupAccountNumber} - 23",
TransactionStatusDescription = "Completed",
TransactionTypeCode = "SPMT",
TransactionTypeDescription = "Regular Payment LandmarkCU TRANSFER 12346",
Uid = "abcd77299_sABCDMD]MYo5crdZyPN3s2QAHx[CHxgigabcdeYuALuVGL9Jklm_23"
}
})
.Verifiable();
var results = await _transactionService.GetTransactionHistory(1234555, Convert.ToDateTime("12/25/2020"), Convert.ToDateTime("2/2/2021"), null);
var resultsList = results.ToList();
Assert.NotNull(results);
Assert.AreEqual(2, resultsList.Count);
Assert.True(resultsList.Any(x => x.AccountNumber == setupAccountNumber));
_mockAccountService.Verify();
_mockTransactionDao.Verify();
}
[Test]
public async Task GetTransactionHistory_NullTransactions_EmptyList()
{
var setupAccountNumber = 8675309143;
var accountResponse = new Account()
{
Id="fasdfsda;fjsdipfu0-231231"
};
_mockAccountService.Setup(x => x.GetAccountDetails(It.IsAny<CoreRequestParameters>(),
It.IsAny<AcctNbrRequest>())).ReturnsAsync(accountResponse).Verifiable();
_mockTransactionDao
.Setup(x => x.FindTransactionHistoryById(It.IsAny<CoreRequestParameters>(), It.IsAny<TransactionHistoryRequest>(), It.IsAny<string>()))
.ReturnsAsync((IEnumerable<TransactionHistory>)null)
.Verifiable();
var results = await _transactionService.GetTransactionHistory(1234555, Convert.ToDateTime("12/25/2020"), Convert.ToDateTime("2/2/2021"), null);
Assert.NotNull(results);
var resultsList = results.ToList();
Assert.IsEmpty(resultsList);
_mockAccountService.Verify();
_mockTransactionDao.Verify();
}
[Test]
public async Task GetTransactionHistory_NoAccount_ReturnNull()
{
_mockAccountService.Setup(x => x.GetAccountDetails(It.IsAny<CoreRequestParameters>(),
It.IsAny<AcctNbrRequest>())).ReturnsAsync((Account)null).Verifiable();
var results = await _transactionService.GetTransactionHistory(1234555, Convert.ToDateTime("12/25/2020"), Convert.ToDateTime("2/2/2021"), null);
Assert.Null(results);
_mockAccountService.Verify();
_mockTransactionDao.Verify( x => x.FindTransactionHistoryById(It.IsAny<CoreRequestParameters>(), It.IsAny<TransactionHistoryRequest>(), It.IsAny<string>()), Times.Never);
}
[Test]
public void GetTransactionHistory_TransactionDao_Exception()
{
var accountResponse = new Account()
{
Id = "fasdfsda;fjsdipfu0-231231"
};
_mockAccountService.Setup(x => x.GetAccountDetails(It.IsAny<CoreRequestParameters>(),
It.IsAny<AcctNbrRequest>())).ReturnsAsync(accountResponse).Verifiable();
_mockTransactionDao.Setup(x => x.FindTransactionHistoryById(It.IsAny<CoreRequestParameters>(), It.IsAny<TransactionHistoryRequest>(), It.IsAny<string>()))
.Throws(new Exception("Ohh nooo"));
Assert.ThrowsAsync<Exception>(async () =>
await _transactionService.GetTransactionHistory(1234555, Convert.ToDateTime("12/25/2020"), Convert.ToDateTime("2/2/2021"), null));
_mockAccountService.Verify();
}
[Test]
public void GetTransactionHistory_AccountService_Exception()
{
_mockAccountService.Setup(x => x.GetAccountDetails(It.IsAny<CoreRequestParameters>(),
It.IsAny<AcctNbrRequest>())).Throws(new Exception("Ohh nooo"));
Assert.ThrowsAsync<Exception>(async () =>
await _transactionService.GetTransactionHistory(1234555, Convert.ToDateTime("12/25/2020"), Convert.ToDateTime("2/2/2021"), null));
_mockAccountService.Verify();
}
[Test]
public async Task GetTransactionsByDateSpan_OK()
{
_mockTransactionDao.Setup(x => x.GetTransactionsByDateSpan(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(new List<TransactionAlertInfo>() { new TransactionAlertInfo() });
var results = await _transactionService.GetTransactionsByDateSpan(DateTime.UtcNow.AddMinutes(-1), DateTime.UtcNow, new string[1]);
Assert.NotNull(results);
var resultsList = results.ToList();
Assert.AreEqual(1, resultsList.Count);
}
[Test]
public async Task GetTransactionsByDateSpan_Exception()
{
_mockTransactionDao.Setup(x => x.GetTransactionsByDateSpan(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>())).ThrowsAsync(new Exception("Exception!"));
Assert.ThrowsAsync<Exception>(async () =>
await _transactionService.GetTransactionsByDateSpan(DateTime.UtcNow.AddMinutes(-1), DateTime.UtcNow, new string[1]));
}
}
}