Files
monorepo/LCU.API.Collections.RepoApi-old/LCU.API.Collections.RepoApiTests/Controllers/RefundStatusControllerTest.cs
T
2026-04-20 14:47:24 -05:00

172 lines
5.2 KiB
C#

using LCU.API.Collections.RepoApi.Controllers;
using LCU.API.Collections.RepoApi.Exceptions;
using LCU.API.Collections.RepoApi.Services;
using LCU.Shared.Collections.RepoApiLib.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Moq;
using Xunit;
namespace LCU.API.Collections.RepoApiTests.Controllers
{
public class RefundStatusControllerTest
{
private RefundStatusController _refundStatusController;
private Mock<IRefundStatusService> _refundStatusService;
private Mock<IHttpContextAccessor> _httpAccessor;
public RefundStatusControllerTest()
{
_refundStatusService = new Mock<IRefundStatusService>();
_httpAccessor = new Mock<IHttpContextAccessor>();
_refundStatusController = new RefundStatusController(
_refundStatusService.Object,
_httpAccessor.Object);
}
[Fact]
public async void GetById_Ok()
{
// Arrange
_refundStatusService.Setup(service => service.GetAsync(It.IsAny<int>())).ReturnsAsync(
new RefundStatus());
// Act
var result = await _refundStatusController.GetById(123);
// Assert
Assert.NotNull(result);
var okResult = result as OkObjectResult;
Assert.NotNull(okResult);
var okValue = okResult.Value;
Assert.NotNull(okValue);
var refundStatus = okValue as RefundStatus;
Assert.NotNull(refundStatus);
}
[Fact]
public async void GetById_Returns_Bad_Request_Invalid_ID_Equal_to_Zero()
{
// Act
var result = await _refundStatusController.GetById(0);
// Assert
Assert.NotNull(result);
var badResult = result as BadRequestObjectResult;
Assert.NotNull(badResult);
}
[Fact]
public async void GetById_Returns_NotFound_On_NFE()
{
// Arrange
_refundStatusService.Setup(service => service.GetAsync(It.IsAny<int>())).ThrowsAsync(
new NotFoundException("Refund Status Not Found Test"));
// Act
var result = await _refundStatusController.GetById(123);
// Assert
Assert.NotNull(result);
var badResult = result as NotFoundObjectResult;
Assert.NotNull(badResult);
var badResultValue = badResult.Value;
Assert.NotNull(badResultValue);
var badResultMessage = badResultValue as string;
Assert.NotNull(badResultMessage);
Assert.Equal("Refund Status Not Found Test", badResultMessage);
}
[Fact]
public async void Post_Ok()
{
// Arrange
_refundStatusService.Setup(service => service.SaveAsync(It.IsAny<RefundStatus>())).ReturnsAsync(
new RefundStatus());
// Act
var result = await _refundStatusController.Post(new RefundStatus() {RepoId = 123});
// Assert
Assert.NotNull(result);
var okResult = result as OkObjectResult;
Assert.NotNull(okResult);
var okValue = okResult.Value;
Assert.NotNull(okValue);
var refundStatus = okValue as RefundStatus;
Assert.NotNull(refundStatus);
}
[Fact]
public async void Post_Returns_Bad_Request_Invalid_ID_Equal_to_Zero()
{
// Act
var result = await _refundStatusController.Post(new RefundStatus() {RepoId = 0});
// Assert
Assert.NotNull(result);
var badResult = result as BadRequestObjectResult;
Assert.NotNull(badResult);
}
[Fact]
public async void Put_Ok()
{
// Arrange
_refundStatusService.Setup(service => service.UpdateAsync(It.IsAny<RefundStatus>())).ReturnsAsync(
new RefundStatus());
// Act
var result = await _refundStatusController.Put(123, new RefundStatus() {RepoId = 123});
// Assert
Assert.NotNull(result);
var okResult = result as OkObjectResult;
Assert.NotNull(okResult);
var okValue = okResult.Value;
Assert.NotNull(okValue);
var refundStatus = okValue as RefundStatus;
Assert.NotNull(refundStatus);
}
[Fact]
public async void Put_Returns_Bad_Request_Invalid_ID_Equal_to_Zero()
{
// Act
var result = await _refundStatusController.Put(0, new RefundStatus() {RepoId = 0});
// Assert
Assert.NotNull(result);
var badResult = result as BadRequestObjectResult;
Assert.NotNull(badResult);
}
[Fact]
public async void Put_Returns_Bad_Request_Invalid_ID_Mismatch()
{
// Act
var result = await _refundStatusController.Put(123, new RefundStatus() {RepoId = 1234});
// Assert
Assert.NotNull(result);
var badResult = result as BadRequestObjectResult;
Assert.NotNull(badResult);
}
}
}