202 lines
9.8 KiB
C#
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]));
|
|
}
|
|
}
|
|
} |