73 lines
3.8 KiB
C#
73 lines
3.8 KiB
C#
using LCU.API.Internal.LoanRate.Services.LoadTestingServices;
|
|
using LCU.API.Internal.LoanRate.Services.LoanRateOperationServices;
|
|
using LCU.API.Internal.LoanRate.Services.QueueServices;
|
|
using LCU.Library.Internal.Exceptions;
|
|
using LCU.Library.Internal.LcuEvaluationModels.Entities;
|
|
using LCU.Library.Internal.LoanRateModels.Entities;
|
|
using LCU.Library.Internal.LoanRateModels.Entities.LoadTestingEntities;
|
|
using LCU.Library.Internal.LoanRateModels.Requests;
|
|
using LCU.Library.Internal.LoanRateModels.Requests.LoadTestRequest;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace LCU.API.Internal.LoanRateTests.ServiceTests.LoadTestingServices;
|
|
|
|
public class LoadTestProcessRateServiceTest
|
|
{
|
|
private readonly Mock<IRateFinderService> _mockRateFinderService;
|
|
private readonly Mock<IQueueLoadTestRateCompletionService> _mockQueueLoadTestRateCompletionService;
|
|
private readonly ILoadTestProcessRateService _loadTestProcessRateService;
|
|
|
|
public LoadTestProcessRateServiceTest()
|
|
{
|
|
_mockRateFinderService = new Mock<IRateFinderService>();
|
|
_mockQueueLoadTestRateCompletionService = new Mock<IQueueLoadTestRateCompletionService>();
|
|
_loadTestProcessRateService = new LoadTestProcessRateService(_mockRateFinderService.Object,
|
|
_mockQueueLoadTestRateCompletionService.Object);
|
|
}
|
|
|
|
[Fact]
|
|
public async void HandleLoadTestProcessRate_Success()
|
|
{
|
|
var random = new Random();
|
|
var request = new LoadTestProcessRateRequest {
|
|
RateProcessingInfo = new RateProcessingInfo
|
|
{
|
|
LoadTestRunInfoId = random.Next(1, 1000),
|
|
RateProcessingInfoId = random.Next(1, 1000),
|
|
Payload = JsonConvert.SerializeObject(new RateRequest())
|
|
}
|
|
};
|
|
|
|
_mockRateFinderService.Setup(x => x.DetermineRate(It.IsAny<DateTime>(), It.IsAny<List<EvaluationDetail>>())).ReturnsAsync(( new Rate(), string.Empty ));
|
|
|
|
await _loadTestProcessRateService.HandleLoadTestProcessRate(request);
|
|
|
|
_mockRateFinderService.Verify(x => x.DeterminePassedRules(It.IsAny<RateRequest>()), Times.Once);
|
|
_mockRateFinderService.Verify(x => x.DetermineRate(It.IsAny<DateTime>(), It.IsAny<List<EvaluationDetail>>()), Times.Once);
|
|
_mockRateFinderService.Verify(x => x.CalculateFinalRateValue(It.IsAny<RateRequest>(), It.IsAny<Rate>()), Times.Once);
|
|
_mockQueueLoadTestRateCompletionService.Verify(x => x.QueueLoadTestRateCompletionRequest(It.IsAny<LoadTestRateCompletionRequest>()), Times.Once);
|
|
}
|
|
|
|
[Fact]
|
|
public void HandleLoadTestProcessRate_Failure_ThrowsException()
|
|
{
|
|
var random = new Random();
|
|
var request = new LoadTestProcessRateRequest {
|
|
RateProcessingInfo = new RateProcessingInfo
|
|
{
|
|
LoadTestRunInfoId = random.Next(1, 1000),
|
|
RateProcessingInfoId = random.Next(1, 1000),
|
|
Payload = JsonConvert.SerializeObject(new RateRequest())
|
|
}
|
|
};
|
|
|
|
_mockRateFinderService.Setup(x => x.DeterminePassedRules(It.IsAny<RateRequest>())).ThrowsAsync(new Exception("Test")).Verifiable();
|
|
|
|
Assert.ThrowsAsync<ServiceException>( async () => await _loadTestProcessRateService.HandleLoadTestProcessRate(request));
|
|
|
|
_mockRateFinderService.Verify(x => x.DeterminePassedRules(It.IsAny<RateRequest>()), Times.Once);
|
|
_mockRateFinderService.Verify(x => x.DetermineRate(It.IsAny<DateTime>(), It.IsAny<List<EvaluationDetail>>()), Times.Never);
|
|
_mockRateFinderService.Verify(x => x.CalculateFinalRateValue(It.IsAny<RateRequest>(), It.IsAny<Rate>()), Times.Never);
|
|
_mockQueueLoadTestRateCompletionService.Verify(x => x.QueueLoadTestRateCompletionRequest(It.IsAny<LoadTestRateCompletionRequest>()), Times.Once);
|
|
}
|
|
} |