Files
monorepo/LCU.API.Internal.LoanRate/LCU.API.Internal.LoanRateTests/ServiceTests/LoadTestingServices/LoadTestProcessRateServiceTest.cs
T
2026-04-07 14:21:04 -05:00

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);
}
}