Files
2026-04-07 14:21:04 -05:00

232 lines
7.8 KiB
C#

using System.Linq.Dynamic.Core;
using LCU.API.Internal.LoanRate.Controllers;
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.Entities;
using LCU.Library.Internal.LoanRateModels.Requests;
using LCU.Library.Internal.LoanRateModels.Responses;
using Microsoft.AspNetCore.Mvc;
namespace LCU.API.Internal.LoanRateTests.ControllerTests;
public class RateUploadInfoControllerTest : CrudControllerTest<RateUploadInfo>
{
private readonly Mock<IRateUploadInfoService> _mockRateUploadInfoService = new();
private readonly RateUploadInfoController _controller;
public RateUploadInfoControllerTest()
{
_controller = new RateUploadInfoController(_mockRateUploadInfoService.Object);
}
[Fact]
public async void RateUploadInfo_GetLatest_OK()
{
var rateUploadInfo = new RateUploadInfo
{
RateUploadInfoId = (int)typeof(int).GetRandomValue()
};
_mockRateUploadInfoService.Setup(x => x.GetLatestAsync()).ReturnsAsync(rateUploadInfo).Verifiable();
var result = await _controller.GetLatest();
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_GetLatest_NoContent()
{
RateUploadInfo? rateUploadInfo = null;
_mockRateUploadInfoService.Setup(x => x.GetLatestAsync()).ReturnsAsync(rateUploadInfo).Verifiable();
var result = await _controller.GetLatest();
Assert.NotNull(result);
Assert.IsType<NoContentResult>(result);
var status = result as NoContentResult;
Assert.NotNull(status);
Assert.Equal(204, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_GetLatest_InternalServerError()
{
_mockRateUploadInfoService.Setup(x => x.GetLatestAsync())
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.GetLatest();
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_GetFilteredRateUploadInfo_OK()
{
var request = new RateUploadInfoFilter
{
EffectiveDate = (DateTime)typeof(DateTime).GetRandomValue()
};
var response = new RateUploadInfoFilterResult
{
Items = new List<RateUploadInfo>
{
new() { RateUploadInfoId = (int)typeof(int).GetRandomValue() },
new() { RateUploadInfoId = (int)typeof(int).GetRandomValue() },
new() { RateUploadInfoId = (int)typeof(int).GetRandomValue() }
}
};
_mockRateUploadInfoService.Setup(x => x.GetFilteredRateUploadInfo(request)).ReturnsAsync(response).Verifiable();
var result = await _controller.GetFilteredRateUploadInfo(request);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_GetFilteredRateUploadInfo_InternalServerError()
{
var request = new RateUploadInfoFilter
{
EffectiveDate = (DateTime)typeof(DateTime).GetRandomValue()
};
_mockRateUploadInfoService.Setup(x => x.GetFilteredRateUploadInfo(request))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.GetFilteredRateUploadInfo(request);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_ComplexDelete_OK()
{
var rateUploadInfoId = (int)typeof(int).GetRandomValue();
_mockRateUploadInfoService.Setup(x => x.ComplexDelete(rateUploadInfoId)).Verifiable();
var result = await _controller.ComplexDelete(rateUploadInfoId);
Assert.NotNull(result);
Assert.IsType<OkResult>(result);
var status = result as OkResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_ComplexDelete_BadRequest()
{
var rateUploadInfoId = 0;
var result = await _controller.ComplexDelete(rateUploadInfoId);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateUploadInfo_ComplexDelete_InternalServerError()
{
var rateUploadInfoId = (int)typeof(int).GetRandomValue();
_mockRateUploadInfoService.Setup(x => x.ComplexDelete(rateUploadInfoId))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.ComplexDelete(rateUploadInfoId);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_ComplexSave_OK()
{
var rateUploadInfoRequest = new RateUploadInfoRequest
{
EffectiveDate = (DateTime)typeof(DateTime).GetRandomValue(),
FileName = (string)typeof(string).GetRandomValue()
};
_mockRateUploadInfoService.Setup(x => x.ComplexSave(rateUploadInfoRequest)).Verifiable();
var result = await _controller.ComplexSave(rateUploadInfoRequest);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
[Fact]
public async void RateUploadInfo_ComplexSave_BadRequest()
{
RateUploadInfoRequest? rateUploadInfoRequest = null;
var result = await _controller.ComplexSave(rateUploadInfoRequest);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateUploadInfo_ComplexSave_InternalServerError()
{
var rateUploadInfoRequest = new RateUploadInfoRequest
{
EffectiveDate = (DateTime)typeof(DateTime).GetRandomValue(),
FileName = (string)typeof(string).GetRandomValue()
};
_mockRateUploadInfoService.Setup(x => x.ComplexSave(rateUploadInfoRequest))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.ComplexSave(rateUploadInfoRequest);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateUploadInfoService.Verify();
}
}