Files
monorepo/LCU.Api.Internal.CoreApiWrapper/LCU.Api.Internal.CoreApiWrapperTest/Service/AccountUserFieldServiceTest.cs
T
2026-03-31 14:32:23 -05:00

420 lines
18 KiB
C#

using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using NUnit.Framework;
using Moq;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels;
using LCU.Api.Internal.CoreApiWrapper.Services;
using LCU.Library.Internal.CoreApiWrapperLib.DataAccess;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Accounts;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests;
namespace LCU.Api.Internal.CoreApiWrapperTest.Service
{
public class AccountUserFieldServiceTest
{
private readonly AccountUserFieldService _accountUserFieldService;
private readonly Mock<IAccountService> _mockAccountService;
private readonly Mock<IAccountUserFieldDao> _mockAccountUserFieldDao;
public AccountUserFieldServiceTest()
{
_mockAccountService = new Mock<IAccountService>();
_mockAccountUserFieldDao = new Mock<IAccountUserFieldDao>();
_accountUserFieldService = new AccountUserFieldService(_mockAccountService.Object,_mockAccountUserFieldDao.Object);
}
[Test]
public void GetAccountUserFieldCoreApiResponseAsync_ExceptionThrown()
{
_mockAccountUserFieldDao.Setup(x => x.FindAccountUserFieldCoreApiResponseByAccountId(It.IsAny<CoreRequestParameters>(), It.IsAny<string>())).Throws(new Exception("Oops"));
Assert.ThrowsAsync<Exception>(async () =>
await _accountUserFieldService.GetAccountUserFieldCoreApiResponseAsync("testaccountiddsafasfsadfsdfsdafsd"));
}
[Test]
public async Task GetAccountUserFieldCoreApiResponseAsync_UserFieldsReturned()
{
var accountUserFields = new List<AccountUserField>()
{
new AccountUserField()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
},
new AccountUserField()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
}
};
var coreMessageheader = new CoreMessageHeader();
var accountUserFieldCoreApiResponse = new CoreApiMessage<IEnumerable<AccountUserField>>(coreMessageheader, accountUserFields);
_mockAccountUserFieldDao.Setup(x => x.FindAccountUserFieldCoreApiResponseByAccountId(It.IsAny<CoreRequestParameters>(), It.IsAny<string>())).ReturnsAsync(accountUserFieldCoreApiResponse);
var result = await _accountUserFieldService.GetAccountUserFieldCoreApiResponseAsync("testaccountidasfasdfsdfsadfsdfsdf");
Assert.NotNull(result);
Assert.AreEqual(2, result.MessageBody.Count());
}
[Test]
public void UpdateAccountUserFieldAsync_ExceptionThrown()
{
_mockAccountUserFieldDao.Setup(x => x.UpdateAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(), It.IsAny<string>(), It.IsAny<string>())).Throws(new Exception("Oops"));
var accountUserUpdateRequest = new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
Assert.ThrowsAsync<Exception>(async () =>
await _accountUserFieldService.UpdateAccountUserFieldAsync(accountUserUpdateRequest, 10002312312, "testaccountidfdafdfasfdsf", "TEST1"));
}
[Test]
public async Task UpdateAccountUserFieldAsync_UpdatedUserFieldsReturned()
{
var updatedAccountUserField = new AccountUserField()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y",
LastMaintained = Convert.ToDateTime("9/1/2001")
};
_mockAccountUserFieldDao.Setup(x => x.UpdateAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(updatedAccountUserField);
var accountUserUpdateRequest = new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
var result = await _accountUserFieldService.UpdateAccountUserFieldAsync(accountUserUpdateRequest, 10002312312, "testaccountidfdafdfasfdsf", "TEST1");
Assert.NotNull(result);
Assert.AreEqual(updatedAccountUserField, result);
}
[Test]
public void InsertAccountUserFieldAsync_ExceptionThrown()
{
_mockAccountUserFieldDao.Setup(x => x.InsertAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(), It.IsAny<string>())).Throws(new Exception("Oops"));
var accountUserUpdateRequest = new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
Assert.ThrowsAsync<Exception>(async () =>
await _accountUserFieldService.InsertAccountUserFieldAsync(accountUserUpdateRequest, "testaccountidfdafdfasfdsf"));
}
[Test]
public async Task InsertAccountUserFieldAsync_InsertUserFieldsReturned()
{
var createdAccountUserField = new AccountUserField()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y",
LastMaintained = Convert.ToDateTime("9/1/2001")
};
_mockAccountUserFieldDao.Setup(x => x.InsertAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(),
It.IsAny<string>())).ReturnsAsync(createdAccountUserField);
var accountUserUpdateRequest = new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
var result = await _accountUserFieldService.InsertAccountUserFieldAsync(accountUserUpdateRequest, "testaccountidfdafdfasfdsf");
Assert.NotNull(result);
Assert.AreEqual(createdAccountUserField, result);
}
[Test]
public void UpdateAccountUserFieldsAsync_AccountNull_NullExceptionThrown()
{
var accountUserFieldUpdateRequests = new List<AccountUserFieldRequest>()
{
new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
},
new AccountUserFieldRequest()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
}
};
Account testAccount = null;
_mockAccountService.Setup(x => x.GetAccountDetailsByAccountNumber(It.IsAny<long>())).ReturnsAsync(testAccount);
Assert.ThrowsAsync<NullReferenceException>(async () =>
await _accountUserFieldService.UpdateAccountUserFieldsAsync(accountUserFieldUpdateRequests));
}
[Test]
public void UpdateAccountUserFieldsAsync_ExistingUserFieldNull_NullExceptionThrown()
{
var accountUserFieldUpdateRequests = new List<AccountUserFieldRequest>()
{
new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
},
new AccountUserFieldRequest()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
}
};
Account testAccount = new Account()
{
Id = "TEST-adsfasdfas[]djfas"
};
_mockAccountService.Setup(x => x.GetAccountDetailsByAccountNumber(It.IsAny<long>())).ReturnsAsync(testAccount);
IEnumerable<AccountUserField> accountUserFields = new List<AccountUserField>();
CoreMessageHeader coreMessageHeader = new CoreMessageHeader();
CoreApiMessage<IEnumerable<AccountUserField>> coreApiMessageAccountUserFields = new CoreApiMessage<IEnumerable<AccountUserField>>(coreMessageHeader, accountUserFields);
_mockAccountUserFieldDao.Setup(x => x.FindAccountUserFieldCoreApiResponseByAccountId(It.IsAny<CoreRequestParameters>(),
It.IsAny<string>())).ReturnsAsync(coreApiMessageAccountUserFields);
Assert.ThrowsAsync<NullReferenceException>(async () =>
await _accountUserFieldService.UpdateAccountUserFieldsAsync(accountUserFieldUpdateRequests));
}
[Test]
public void UpdateAccountUserFieldsAsync_UpdateUserFieldNull_NullExceptionThrown()
{
var accountUserFieldUpdateRequests = new List<AccountUserFieldRequest>()
{
new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
},
new AccountUserFieldRequest()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
}
};
Account testAccount = new Account()
{
Id = "TEST-adsfasdfas[]djfas"
};
_mockAccountService.Setup(x => x.GetAccountDetailsByAccountNumber(It.IsAny<long>())).ReturnsAsync(testAccount);
IEnumerable<AccountUserField> accountUserFields = new List<AccountUserField>()
{
new AccountUserField()
{
Id = "TEST1",
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "N"
},
new AccountUserField()
{
Id = "TEST2",
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "Y"
}
};
CoreMessageHeader coreMessageHeader = new CoreMessageHeader(1122000321);
CoreApiMessage<IEnumerable<AccountUserField>> coreApiMessageAccountUserFields = new CoreApiMessage<IEnumerable<AccountUserField>>(coreMessageHeader, accountUserFields);
_mockAccountUserFieldDao.Setup(x => x.FindAccountUserFieldCoreApiResponseByAccountId(It.IsAny<CoreRequestParameters>(),
It.IsAny<string>())).ReturnsAsync(coreApiMessageAccountUserFields);
AccountUserField updatedAccountUserField = null;
_mockAccountUserFieldDao.Setup(x => x.UpdateAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(updatedAccountUserField);
Assert.ThrowsAsync<NullReferenceException>(async () =>
await _accountUserFieldService.UpdateAccountUserFieldsAsync(accountUserFieldUpdateRequests));
}
[Test]
public async Task UpdateAccountUserFieldsAsync_ListofUpdateduserfields()
{
var request1 = new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
var request2 = new AccountUserFieldRequest()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
};
var accountUserFieldUpdateRequests = new List<AccountUserFieldRequest>()
{
request1,
request2
};
Account testAccount = new Account()
{
Id = "TEST-adsfasdfas[]djfas"
};
_mockAccountService.Setup(x => x.GetAccountDetailsByAccountNumber(It.IsAny<long>())).ReturnsAsync(testAccount);
var accountUserField1 = new AccountUserField()
{
Id = "TEST1",
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "N"
};
var accountUserField2 = new AccountUserField()
{
Id = "TEST2",
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "Y"
};
IEnumerable<AccountUserField> accountUserFields = new List<AccountUserField>()
{
accountUserField1,
accountUserField2
};
CoreMessageHeader coreMessageHeader = new CoreMessageHeader(1122000321);
CoreApiMessage<IEnumerable<AccountUserField>> coreApiMessageAccountUserFields = new CoreApiMessage<IEnumerable<AccountUserField>>(coreMessageHeader, accountUserFields);
_mockAccountUserFieldDao.Setup(x => x.FindAccountUserFieldCoreApiResponseByAccountId(It.IsAny<CoreRequestParameters>(),
It.IsAny<string>())).ReturnsAsync(coreApiMessageAccountUserFields);
AccountUserField updatedAccountUserField1 = new AccountUserField()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
_mockAccountUserFieldDao.Setup(x => x.UpdateAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(),
It.IsAny<string>(),
accountUserField1.Id)).ReturnsAsync(updatedAccountUserField1);
AccountUserField updatedAccountUserField2 = new AccountUserField()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
};
_mockAccountUserFieldDao.Setup(x => x.UpdateAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(),
It.IsAny<string>(),
accountUserField2.Id)).ReturnsAsync(updatedAccountUserField2);
var result = await _accountUserFieldService.UpdateAccountUserFieldsAsync(accountUserFieldUpdateRequests);
Assert.NotNull(result);
Assert.AreEqual(2, result.Count());
var result1 = result.FirstOrDefault(r => r.UserFieldCode == "TEST1");
Assert.NotNull(result1);
Assert.AreEqual("Y", result1.Value);
Assert.AreEqual(100001, result1.AccountNumber);
var result2 = result.FirstOrDefault(r => r.UserFieldCode == "TEST2");
Assert.NotNull(result2);
Assert.AreEqual("N", result2.Value);
Assert.AreEqual(100002, result2.AccountNumber);
}
[Test]
public void InsertAccountUserFieldsAsync_AccountNull_NullExceptionThrown()
{
var accountUserFieldUpdateRequests = new List<AccountUserFieldRequest>()
{
new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
},
new AccountUserFieldRequest()
{
AccountNumber = 100002,
UserFieldCode = "TEST2",
Value = "N"
}
};
Account testAccount = null;
_mockAccountService.Setup(x => x.GetAccountDetailsByAccountNumber(It.IsAny<long>())).ReturnsAsync(testAccount);
Assert.ThrowsAsync<NullReferenceException>(async () =>
await _accountUserFieldService.InsertAccountUserFieldsAsync(accountUserFieldUpdateRequests));
}
[Test]
public async Task InsertAccountUserFieldsAsync_ListofInsertedUserfields()
{
var testAccount = new Account()
{
Id = "TEST-adsfasdfas[]djfas"
};
_mockAccountService.Setup(x => x.GetAccountDetailsByAccountNumber(It.IsAny<long>())).ReturnsAsync(testAccount);
var messageHeader = new CoreMessageHeader() { };
var accountUserFieldRequest1 = new AccountUserFieldRequest()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
var coreApiMessage = new CoreApiMessage<AccountUserFieldRequest>(messageHeader, accountUserFieldRequest1);
var createdAccountUserField1 = new AccountUserField()
{
AccountNumber = 100001,
UserFieldCode = "TEST1",
Value = "Y"
};
_mockAccountUserFieldDao.Setup(x => x.InsertAccountUserField(It.IsAny<CoreApiMessage<AccountUserFieldRequest>>(),
testAccount.Id)).ReturnsAsync(createdAccountUserField1);
var accountUserFieldUpdateRequests = new List<AccountUserFieldRequest>()
{
accountUserFieldRequest1
};
var result = await _accountUserFieldService.InsertAccountUserFieldsAsync(accountUserFieldUpdateRequests);
Assert.NotNull(result);
Assert.AreEqual(1, result.Count());
var result1 = result.FirstOrDefault(r => r.UserFieldCode == "TEST1");
Assert.NotNull(result1);
Assert.AreEqual("Y", result1.Value);
Assert.AreEqual(100001, result1.AccountNumber);
}
}
}