190 lines
7.2 KiB
C#
190 lines
7.2 KiB
C#
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);
|
|
}
|
|
} |