Files
monorepo/LCU.API.Internal.Dispatcher/LCU.Api.Internal.DispatcherTests/ControllerTests/JobControllerTest.cs
T
2026-03-24 15:26:03 -05:00

132 lines
3.7 KiB
C#

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using LCU.Api.Internal.Dispatcher.Controllers;
using LCU.Api.Internal.Dispatcher.Services;
using LCU.Library.Internal.DispatcherModels.Models.Results;
using LCU.Library.Internal.DispatcherModels.Models.Requests;
namespace LCU.Api.Internal.DispatcherTests.ControllerTests;
public class JobControllerTest
{
private readonly JobController controller;
private readonly Mock<IJobService> _mockJobService;
public JobControllerTest()
{
_mockJobService = new Mock<IJobService>();
controller = new JobController(_mockJobService.Object);
}
[Fact]
public async void PagedFilter_Ok()
{
// Arrange
var filter = new Filter()
{
Limit = 2,
Page = 1
};
_mockJobService.Setup(service => service.GetFilteredJobs(filter))
.ReturnsAsync(new PagedResult<Job>()
{
Total = 4,
Items = new List<Job>()
{
new Job() {JobId = 1},
new Job() {JobId = 2},
new Job() {JobId = 3},
new Job() {JobId = 4}
}
});
// Act
var result = await controller.GetFilteredJobs(filter);
// Assert
Assert.NotNull(result);
var okObject = result as OkObjectResult;
Assert.NotNull(okObject);
var pagedResponse = okObject.Value as PagedResponse<Job>;
Assert.NotNull(pagedResponse);
Assert.Equal(4, pagedResponse.TotalItems);
Assert.Equal(1, pagedResponse.Items.ElementAt(0).JobId);
Assert.Equal(2, pagedResponse.Items.ElementAt(1).JobId);
Assert.Equal(0, pagedResponse.PreviousPage);
Assert.Equal(2, pagedResponse.NextPage);
Assert.Equal(2, pagedResponse.TotalPages);
}
[Fact]
public async void Copy_OK()
{
var jobId = DateTime.Now.Millisecond;
var request = new CopyJobRequest
{
JobId = jobId,
ChangeEnvironment = false
};
var response = new Job
{
JobId = DateTime.Now.Millisecond + 1
};
_mockJobService.Setup(x => x.CopyJobAsync(request))
.ReturnsAsync(response).Verifiable();
var result = await controller.Copy(request);
Assert.NotNull(result);
Assert.IsType<OkObjectResult>(result);
var status = result as OkObjectResult;
Assert.NotNull(status);
Assert.Equal(200, status.StatusCode);
var jobResponse = status.Value as Job;
Assert.NotNull(jobResponse);
Assert.NotEqual(request.JobId, jobResponse.JobId);
Assert.NotEqual(0, jobResponse.JobId);
_mockJobService.Verify();
}
[Fact]
public async void Copy_BadRequest()
{
CopyJobRequest request = null;
var result = await controller.Copy(request);
Assert.NotNull(result);
Assert.IsType<BadRequestObjectResult>(result);
var status = result as BadRequestObjectResult;
Assert.NotNull(status);
Assert.Equal(400, status.StatusCode);
}
[Fact]
public async void Copy_InternalServerError()
{
var request = new CopyJobRequest
{
JobId = DateTime.Now.Millisecond
};
_mockJobService.Setup(x => x.CopyJobAsync(request))
.Throws(new Exception("Test")).Verifiable();
var result = await controller.Copy(request);
Assert.NotNull(result);
Assert.IsType<StatusCodeResult>(result);
var status = result as StatusCodeResult;
Assert.NotNull(status);
Assert.Equal(500, status.StatusCode);
_mockJobService.Verify();
}
}