Adding
This commit is contained in:
+190
@@ -0,0 +1,190 @@
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.LoanRateModels.Entities;
|
||||
using LCU.API.Internal.LoanRateLib.Repositories;
|
||||
using LCU.API.Internal.LoanRate.Services;
|
||||
using LCU.Library.Internal.LcuClassPatterns.CrudTests.Tests;
|
||||
using LCU.Library.Internal.LcuClassPatterns.CrudTests.Utilities;
|
||||
using LCU.Library.Internal.LoanRateModels.Enums;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateTests.ServiceTests;
|
||||
|
||||
public class RateSheetServiceTest : CrudServiceTest<RateSheet>
|
||||
{
|
||||
private readonly IRateSheetService _service;
|
||||
private readonly Mock<IRateSheetRepository> _mockRateSheetRepository;
|
||||
|
||||
public RateSheetServiceTest()
|
||||
{
|
||||
_mockRateSheetRepository = new Mock<IRateSheetRepository>();
|
||||
_service = new RateSheetService(_mockRateSheetRepository.Object);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void RateSheet_GetIncludeAllAsync_Success()
|
||||
{
|
||||
var rateSheets = new List<RateSheet>
|
||||
{
|
||||
new ()
|
||||
{
|
||||
RateSheetId = (int)typeof(int).GetRandomValue(),
|
||||
RateType = (RateTypes)typeof(RateTypes).GetRandomValue(),
|
||||
Rates = new List<Rate>
|
||||
{
|
||||
new() { RateId = (int)typeof(int).GetRandomValue() },
|
||||
new() { RateId = (int)typeof(int).GetRandomValue() },
|
||||
new() { RateId = (int)typeof(int).GetRandomValue() }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
_mockRateSheetRepository.Setup(x => x.FindIncludeAllAsync())
|
||||
.ReturnsAsync(rateSheets).Verifiable();
|
||||
|
||||
var result = (await _service.GetIncludeAllAsync())?.ToList();
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(rateSheets.First().RateSheetId, result.First().RateSheetId);
|
||||
Assert.Equal(rateSheets.Count, result.Count);
|
||||
_mockRateSheetRepository.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void RateSheet_GetIncludeAllAsync_Success_NotFound()
|
||||
{
|
||||
List<RateSheet>? rateSheets = null;
|
||||
|
||||
_mockRateSheetRepository.Setup(x => x.FindIncludeAllAsync())
|
||||
.ReturnsAsync(rateSheets).Verifiable();
|
||||
|
||||
var result = await _service.GetIncludeAllAsync();
|
||||
Assert.NotNull(result);
|
||||
Assert.Empty(result);
|
||||
_mockRateSheetRepository.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Rate_GetAsync_Failure_Exception()
|
||||
{
|
||||
_mockRateSheetRepository.Setup(x => x.FindAsync())
|
||||
.Throws(new Exception("Test")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(async () => await _service.GetAsync());
|
||||
|
||||
_mockRateSheetRepository.Verify(x => x.FindAsync(), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void RateSheet_GetRatesByRateTypeAsync_Success()
|
||||
{
|
||||
var rateType = (RateTypes)typeof(RateTypes).GetRandomValue();
|
||||
var rateSheet = new RateSheet
|
||||
{
|
||||
RateSheetId = (int)typeof(int).GetRandomValue(),
|
||||
RateType = (RateTypes)typeof(RateTypes).GetRandomValue(),
|
||||
Rates = new List<Rate>
|
||||
{
|
||||
new() { RateId = (int)typeof(int).GetRandomValue() },
|
||||
new() { RateId = (int)typeof(int).GetRandomValue() },
|
||||
new() { RateId = (int)typeof(int).GetRandomValue() }
|
||||
}
|
||||
};
|
||||
_mockRateSheetRepository.Setup(x => x.FindRatesByRateType(rateType))
|
||||
.ReturnsAsync(rateSheet.Rates).Verifiable();
|
||||
|
||||
var result = (await _service.GetRatesByRateTypeAsync(rateType))?.ToList();
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(rateSheet.Rates.First().RateId, result.First().RateId);
|
||||
Assert.Equal(rateSheet.Rates.Count, result.Count);
|
||||
_mockRateSheetRepository.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void RateSheet_GetRatesByRateTypeAsync_Success_NotFound()
|
||||
{
|
||||
List<Rate>? rates = null;
|
||||
|
||||
_mockRateSheetRepository.Setup(x => x.FindRatesByRateType(It.IsAny<RateTypes>()))
|
||||
.ReturnsAsync(rates).Verifiable();
|
||||
|
||||
var result = await _service.GetRatesByRateTypeAsync(It.IsAny<RateTypes>());
|
||||
Assert.NotNull(result);
|
||||
Assert.Empty(result);
|
||||
_mockRateSheetRepository.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RateSheet_GetRatesByRateTypeAsync_Failure_Exception()
|
||||
{
|
||||
_mockRateSheetRepository.Setup(x => x.FindRatesByRateType(It.IsAny<RateTypes>()))
|
||||
.Throws(new Exception("Test")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(async () => await _service.GetRatesByRateTypeAsync(It.IsAny<RateTypes>()));
|
||||
|
||||
_mockRateSheetRepository.Verify(x => x.FindRatesByRateType(It.IsAny<RateTypes>()), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void RateSheet_GetRatesByDateAndRateTypeAsync_Success()
|
||||
{
|
||||
var effectiveDate = (DateTime)typeof(DateTime).GetRandomValue();
|
||||
var rateType = (RateTypes)typeof(RateTypes).GetRandomValue();
|
||||
var rateSheet = new RateSheet
|
||||
{
|
||||
RateSheetId = (int)typeof(int).GetRandomValue(),
|
||||
RateType = (RateTypes)typeof(RateTypes).GetRandomValue(),
|
||||
Rates = new List<Rate>
|
||||
{
|
||||
new()
|
||||
{
|
||||
RateId = (int)typeof(int).GetRandomValue(),
|
||||
RateStartDate = effectiveDate.AddDays(-2),
|
||||
RateEndDate = effectiveDate.AddDays(2)
|
||||
},
|
||||
new()
|
||||
{
|
||||
RateId = (int)typeof(int).GetRandomValue(),
|
||||
RateStartDate = effectiveDate.AddDays(-1),
|
||||
RateEndDate = effectiveDate.AddDays(3)
|
||||
},
|
||||
new()
|
||||
{
|
||||
RateId = (int)typeof(int).GetRandomValue(),
|
||||
RateStartDate = effectiveDate.AddDays(-5),
|
||||
RateEndDate = effectiveDate.AddDays(2)
|
||||
}
|
||||
}
|
||||
};
|
||||
_mockRateSheetRepository.Setup(x => x.FindRatesByDateAndRateType(effectiveDate, rateType))
|
||||
.ReturnsAsync(rateSheet.Rates).Verifiable();
|
||||
|
||||
var result = (await _service.GetRatesByDateAndRateTypeAsync(effectiveDate, rateType))?.ToList();
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(rateSheet.Rates.First().RateId, result.First().RateId);
|
||||
Assert.Equal(rateSheet.Rates.Count, result.Count);
|
||||
_mockRateSheetRepository.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void RateSheet_GetRatesByDateAndRateTypeAsync_Success_NotFound()
|
||||
{
|
||||
List<Rate>? rates = null;
|
||||
|
||||
_mockRateSheetRepository.Setup(x => x.FindRatesByDateAndRateType(It.IsAny<DateTime>(), It.IsAny<RateTypes>()))
|
||||
.ReturnsAsync(rates).Verifiable();
|
||||
|
||||
var result = await _service.GetRatesByDateAndRateTypeAsync(It.IsAny<DateTime>(), It.IsAny<RateTypes>());
|
||||
Assert.NotNull(result);
|
||||
Assert.Empty(result);
|
||||
_mockRateSheetRepository.Verify();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RateSheet_GetRatesByDateAndRateTypeAsync_Failure_Exception()
|
||||
{
|
||||
_mockRateSheetRepository.Setup(x => x.FindRatesByDateAndRateType(It.IsAny<DateTime>(), It.IsAny<RateTypes>()))
|
||||
.Throws(new Exception("Test")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(async () => await _service.GetRatesByDateAndRateTypeAsync(It.IsAny<DateTime>(), It.IsAny<RateTypes>()));
|
||||
|
||||
_mockRateSheetRepository.Verify(x => x.FindRatesByDateAndRateType(It.IsAny<DateTime>(), It.IsAny<RateTypes>()), Times.Once);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user