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

765 lines
24 KiB
C#

using Microsoft.AspNetCore.Mvc;
using LCU.Library.Internal.LoanRateModels.Entities;
using LCU.API.Internal.LoanRate.Services;
using LCU.API.Internal.LoanRate.Controllers;
namespace LCU.API.Internal.LoanRateTests.ControllerTests;
public class RateEvaluationControllerTest
{
private readonly Mock<IRateEvaluationService> _mockRateEvaluationService;
private readonly RateEvaluationController _controller;
public RateEvaluationControllerTest()
{
_mockRateEvaluationService = new Mock<IRateEvaluationService>();
_controller = new RateEvaluationController(_mockRateEvaluationService.Object);
}
[Fact]
public async void RateEvaluation_Get_OK()
{
var rateEvaluationId = 1;
var rateEvaluations = new List<RateEvaluation>
{
new()
{
RateEvaluationId = rateEvaluationId
}
};
_mockRateEvaluationService.Setup(x => x.GetAsync()).ReturnsAsync(rateEvaluations).Verifiable();
var result = await _controller.Get();
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
var RateEvaluationResult = status.Value as List<RateEvaluation>;
Assert.NotNull(RateEvaluationResult);
Assert.Single(RateEvaluationResult);
Assert.Equal(rateEvaluationId, RateEvaluationResult.First().RateEvaluationId);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Get_NoContent()
{
var rateEvaluations = new List<RateEvaluation>();
_mockRateEvaluationService.Setup(x => x.GetAsync()).ReturnsAsync(rateEvaluations).Verifiable();
var result = await _controller.Get();
Assert.NotNull(result);
Assert.IsType<NoContentResult>(result);
var status = result as NoContentResult;
Assert.NotNull(status);
Assert.Equal(204, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Get_InternalServerError()
{
_mockRateEvaluationService.Setup(x => x.GetAsync())
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.Get();
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_GetById_OK()
{
var rateEvaluationId = 1;
var rateEvaluation = new RateEvaluation
{
RateEvaluationId = rateEvaluationId
};
_mockRateEvaluationService.Setup(x => x.GetByIdAsync(rateEvaluationId))
.ReturnsAsync(rateEvaluation).Verifiable();
var result = await _controller.GetById(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
var rateEvaluationResult = status.Value as RateEvaluation;
Assert.NotNull(rateEvaluationResult);
Assert.Equal(rateEvaluationId, rateEvaluationResult.RateEvaluationId);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_GetById_NoContent()
{
var rateEvaluationId = 1;
RateEvaluation? rateEvaluation = null;
_mockRateEvaluationService.Setup(x => x.GetByIdAsync(rateEvaluationId))
.ReturnsAsync(rateEvaluation).Verifiable();
var result = await _controller.GetById(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<NoContentResult>(result);
var status = result as NoContentResult;
Assert.NotNull(status);
Assert.Equal(204, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_GetById_BadRequest()
{
var rateEvaluationId = 0;
var result = await _controller.GetById(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_GetById_InternalServerError()
{
var rateEvaluationId = 1;
_mockRateEvaluationService.Setup(x => x.GetByIdAsync(rateEvaluationId))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.GetById(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_GetListById_OK()
{
var rateEvaluationIds = new List<int>
{
1,
2,
3
};
var rateEvaluations = new List<RateEvaluation>
{
new() { RateEvaluationId = rateEvaluationIds[0] },
new() { RateEvaluationId = rateEvaluationIds[1] },
new() { RateEvaluationId = rateEvaluationIds[2] }
};
_mockRateEvaluationService.Setup(x => x.GetRangeByIdAsync(rateEvaluationIds))
.ReturnsAsync(rateEvaluations).Verifiable();
var result = await _controller.GetListById(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
var rateEvaluationResult = status.Value as List<RateEvaluation>;
Assert.NotNull(rateEvaluationResult);
Assert.Equal(rateEvaluationIds[0], rateEvaluationResult[0].RateEvaluationId);
Assert.Equal(rateEvaluationIds[1], rateEvaluationResult[1].RateEvaluationId);
Assert.Equal(rateEvaluationIds[2], rateEvaluationResult[2].RateEvaluationId);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_GetListById_NoContent()
{
var rateEvaluationIds = new List<int>
{
1,
2,
3
};
List<RateEvaluation>? rateEvaluations = null;
_mockRateEvaluationService.Setup(x => x.GetRangeByIdAsync(rateEvaluationIds))
.ReturnsAsync(rateEvaluations).Verifiable();
var result = await _controller.GetListById(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<NoContentResult>(result);
var status = result as NoContentResult;
Assert.NotNull(status);
Assert.Equal(204, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_GetListById_BadRequest()
{
List<int>? rateEvaluationIds = null;
var result = await _controller.GetListById(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_GetListById_InternalServerError()
{
var rateEvaluationIds = new List<int>
{
1,
2,
3
};
_mockRateEvaluationService.Setup(x => x.GetRangeByIdAsync(rateEvaluationIds))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.GetListById(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Post_CreatedAtAction()
{
var rateEvaluationId = 1;
var Value = Guid.NewGuid().ToString();
var rateEvaluation = new RateEvaluation
{
EvaluationDetailId = 1
};
var rateEvaluationReturned = new RateEvaluation
{
RateEvaluationId = rateEvaluationId,
EvaluationDetailId = 1
};
_mockRateEvaluationService.Setup(x => x.SaveAsync(rateEvaluation))
.ReturnsAsync(rateEvaluationReturned).Verifiable();
var result = await _controller.Post(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<CreatedAtActionResult>(result);
var status = result as CreatedAtActionResult;
Assert.NotNull(status);
Assert.Equal(201, status.StatusCode);
var resultValue = status.Value as RateEvaluation;
Assert.NotNull(result);
Assert.NotNull(resultValue);
Assert.Equal(rateEvaluationReturned.RateEvaluationId, resultValue.RateEvaluationId);
Assert.Equal(rateEvaluationReturned.EvaluationDetailId, resultValue.EvaluationDetailId);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Post_BadRequest()
{
RateEvaluation? rateEvaluation = null;
var result = await _controller.Post(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_Post_InternalServerError()
{
var rateEvaluation = new RateEvaluation
{
EvaluationDetailId = 1
};
_mockRateEvaluationService.Setup(x => x.SaveAsync(rateEvaluation))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.Post(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_SaveRange_Ok()
{
var rateEvaluations = new List<RateEvaluation>
{
new() { EvaluationDetailId = 1 },
new() { EvaluationDetailId = 2 },
new() { EvaluationDetailId = 3 }
};
_mockRateEvaluationService.Setup(x => x.SaveRangeAsync(rateEvaluations));
var result = await _controller.SaveRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<OkResult>(result);
var status = result as OkResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_SaveRange_BadRequest()
{
List<RateEvaluation>? rateEvaluations = null;
var result = await _controller.SaveRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_SaveRange_InternalServerError()
{
var rateEvaluations = new List<RateEvaluation>
{
new() { EvaluationDetailId = 1 },
new() { EvaluationDetailId = 2 },
new() { EvaluationDetailId = 3 }
};
_mockRateEvaluationService.Setup(x => x.SaveRangeAsync(rateEvaluations))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.SaveRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Put_OK()
{
var rateEvaluationId = 1;
var rateEvaluation = new RateEvaluation
{
RateEvaluationId = rateEvaluationId,
EvaluationDetailId = 1
};
var RateEvaluationReturned = new RateEvaluation
{
RateEvaluationId = rateEvaluationId,
EvaluationDetailId = 1
};
_mockRateEvaluationService.Setup(x => x.UpdateAsync(rateEvaluation))
.ReturnsAsync(RateEvaluationReturned).Verifiable();
var result = await _controller.Put(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
var rateEvaluationResult = status.Value as RateEvaluation;
Assert.NotNull(rateEvaluationResult);
Assert.Equal(rateEvaluation.EvaluationDetailId, rateEvaluationResult.EvaluationDetailId);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Put_Status406NotAcceptable()
{
var rateEvaluation = new RateEvaluation
{
RateEvaluationId = 1
};
var result = await _controller.Put(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(406, status.StatusCode);
}
[Fact]
public async void RateEvaluation_Put_BadRequest_NoIds()
{
var rateEvaluation = new RateEvaluation
{
EvaluationDetailId = 1
};
var result = await _controller.Put(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
_mockRateEvaluationService.Verify(x => x.GetAsync(), Times.Never);
}
[Fact]
public async void RateEvaluation_Put_BadRequest()
{
RateEvaluation? rateEvaluation = null;
var result = await _controller.Put(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_Put_InternalServerError()
{
var rateEvaluation = new RateEvaluation
{
RateEvaluationId = 1
};
_mockRateEvaluationService.Setup(x => x.UpdateAsync(rateEvaluation))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.Put(rateEvaluation);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_UpdateRange_OK()
{
var evaluationDetailIds = new List<int>
{
1,
2,
3
};
var rateEvaluations = new List<RateEvaluation>
{
new()
{
RateEvaluationId = 1,
EvaluationDetailId = evaluationDetailIds[0]
},
new()
{
RateEvaluationId = 2,
EvaluationDetailId = evaluationDetailIds[1]
},
new()
{
RateEvaluationId = 3,
EvaluationDetailId = evaluationDetailIds[2]
}
};
var rateEvaluationsReturned = new List<RateEvaluation>
{
new()
{
RateEvaluationId = 1,
EvaluationDetailId = evaluationDetailIds[0]
},
new()
{
RateEvaluationId = 2,
EvaluationDetailId = evaluationDetailIds[1]
},
new()
{
RateEvaluationId = 3,
EvaluationDetailId = evaluationDetailIds[2]
}
};
_mockRateEvaluationService.Setup(x => x.UpdateRangeAsync(rateEvaluations))
.ReturnsAsync(rateEvaluationsReturned).Verifiable();
var result = await _controller.UpdateRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
var rateEvaluationResult = status.Value as List<RateEvaluation>;
Assert.NotNull(rateEvaluationResult);
Assert.Equal(rateEvaluations[0].EvaluationDetailId, rateEvaluationResult[0].EvaluationDetailId);
Assert.Equal(rateEvaluations[1].EvaluationDetailId, rateEvaluationResult[1].EvaluationDetailId);
Assert.Equal(rateEvaluations[2].EvaluationDetailId, rateEvaluationResult[2].EvaluationDetailId);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_UpdateRange_BadRequest_NoIds()
{
var rateEvaluations = new List<RateEvaluation>
{
new ()
{
EvaluationDetailId = 1
},
new ()
{
EvaluationDetailId = 2
}
};
var result = await _controller.UpdateRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
_mockRateEvaluationService.Verify(x => x.GetAsync(), Times.Never);
}
[Fact]
public async void RateEvaluation_UpdateRange_BadRequest()
{
List<RateEvaluation>? rateEvaluations = null;
var result = await _controller.UpdateRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_UpdateRange_InternalServcerError()
{
var rateEvaluations = new List<RateEvaluation>
{
new ()
{
RateEvaluationId = 1,
EvaluationDetailId = 1
},
new ()
{
RateEvaluationId = 2,
EvaluationDetailId = 2
}
};
_mockRateEvaluationService.Setup(x => x.UpdateRangeAsync(rateEvaluations))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.UpdateRange(rateEvaluations);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Delete_OK()
{
var rateEvaluationId = 1;
_mockRateEvaluationService.Setup(x => x.DeleteAsync(rateEvaluationId)).Verifiable();
var result = await _controller.Delete(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<OkResult>(result);
var status = result as OkResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_Delete_BadRequest()
{
var rateEvaluationId = 0;
var result = await _controller.Delete(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_Delete_InternalServerError()
{
var rateEvaluationId = 1;
_mockRateEvaluationService.Setup(x => x.DeleteAsync(rateEvaluationId))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.Delete(rateEvaluationId);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_DeleteRange_OK()
{
var rateEvaluationIds = new List<int>
{
1,
1,
1
};
_mockRateEvaluationService.Setup(x => x.DeleteRangeAsync(rateEvaluationIds)).Verifiable();
var result = await _controller.DeleteRange(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<OkResult>(result);
var status = result as OkResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_DeleteRange_BadRequest()
{
var rateEvaluationIds = new List<int>();
var result = await _controller.DeleteRange(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_DeleteRange_InternalServerError()
{
var rateEvaluationIds = new List<int>
{
1
};
_mockRateEvaluationService.Setup(x => x.DeleteRangeAsync(rateEvaluationIds))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.DeleteRange(rateEvaluationIds);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_CountByEvaluationDetailId_OK()
{
var evaluationDetailId = DateTime.Now.Millisecond;
var count = DateTime.Now.Minute;
_mockRateEvaluationService.Setup(x => x.CountByEvaluationDetailIdAsync(evaluationDetailId)).ReturnsAsync(count).Verifiable();
var result = await _controller.CountByEvaluationDetailId(evaluationDetailId);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
Assert.Equal(count, status.Value);
_mockRateEvaluationService.Verify();
}
[Fact]
public async void RateEvaluation_CountByEvaluationDetailId_BadRequest()
{
var evaluationDetailId = 0;
var result = await _controller.CountByEvaluationDetailId(evaluationDetailId);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void RateEvaluation_CountByEvaluationDetailId_InternalServerError()
{
var evaluationDetailId = DateTime.Now.Millisecond;
_mockRateEvaluationService.Setup(x => x.CountByEvaluationDetailIdAsync(evaluationDetailId))
.Throws(new Exception("Test")).Verifiable();
var result = await _controller.CountByEvaluationDetailId(evaluationDetailId);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockRateEvaluationService.Verify();
}
}