2026-07-10 10:56:18 -03:00
|
|
|
using Api.SeaHavenIndustries.Controllers;
|
|
|
|
|
using Data.SeaHavenIndustries;
|
|
|
|
|
using FluentAssertions;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using Moq;
|
2026-07-24 18:12:03 -03:00
|
|
|
using SeaHaven.DataServices.Implementation;
|
2026-07-10 10:56:18 -03:00
|
|
|
using SeaHaven.DataServices.Interfaces;
|
|
|
|
|
using SeaHaven.Services.DTOs;
|
|
|
|
|
using SeaHaven.Services.Helpers;
|
|
|
|
|
using SeaHaven.Services.Implementation;
|
|
|
|
|
using SeaHaven.Services.Interfaces;
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
namespace Api.SeaHavenIndustries.Tests;
|
|
|
|
|
|
|
|
|
|
public class WorkOrderControllerSearchTests
|
|
|
|
|
{
|
2026-07-24 17:35:34 -03:00
|
|
|
private static WorkOrderBoardController NewController(IWorkOrderAdvancedSearchService advancedSearch)
|
2026-07-10 10:56:18 -03:00
|
|
|
{
|
2026-07-24 17:35:34 -03:00
|
|
|
var controller = new WorkOrderBoardController(
|
2026-07-10 10:56:18 -03:00
|
|
|
Mock.Of<IWorkOrderBoardService>(),
|
|
|
|
|
Mock.Of<IWorkOrderBoardUpdateService>(),
|
|
|
|
|
Mock.Of<IWorkOrderBoardCreateService>(),
|
|
|
|
|
Mock.Of<IWorkOrderBoardCancelService>(),
|
2026-07-24 17:35:34 -03:00
|
|
|
advancedSearch);
|
2026-07-10 10:56:18 -03:00
|
|
|
|
2026-07-10 10:56:18 -03:00
|
|
|
controller.ControllerContext = new ControllerContext
|
|
|
|
|
{
|
|
|
|
|
HttpContext = new DefaultHttpContext
|
|
|
|
|
{
|
|
|
|
|
User = new System.Security.Claims.ClaimsPrincipal(
|
|
|
|
|
new System.Security.Claims.ClaimsIdentity(
|
|
|
|
|
new[]
|
|
|
|
|
{
|
|
|
|
|
new System.Security.Claims.Claim(
|
|
|
|
|
System.Security.Claims.ClaimTypes.NameIdentifier,
|
|
|
|
|
"test-user")
|
|
|
|
|
},
|
|
|
|
|
"Test"))
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return controller;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SearchBoard_WhenCustomPresetMissingDates_ReturnsBadRequest()
|
|
|
|
|
{
|
|
|
|
|
var advancedSearch = new WorkOrderAdvancedSearchService(
|
2026-08-11 10:45:37 -03:00
|
|
|
Mock.Of<IWorkOrderAdvancedSearchDataService>(),
|
|
|
|
|
Mock.Of<IWorkOrderAccountResolver>());
|
2026-07-24 17:35:34 -03:00
|
|
|
var controller = NewController(advancedSearch);
|
2026-07-10 10:56:18 -03:00
|
|
|
|
|
|
|
|
var result = await controller.SearchBoard(new WorkOrderAdvancedSearchQueryDto
|
|
|
|
|
{
|
|
|
|
|
DatePreset = WorkOrderAdvancedSearchDatePreset.Custom
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var badRequest = result.Should().BeOfType<BadRequestObjectResult>().Subject;
|
|
|
|
|
var body = badRequest.Value.Should().BeOfType<Response>().Subject;
|
|
|
|
|
body.Status.Should().Be("Error");
|
|
|
|
|
body.Message.Should().Contain("dateFrom");
|
|
|
|
|
}
|
2026-07-24 18:12:03 -03:00
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetBoard_WhenWeekEndBeforeWeekStart_ReturnsBadRequest()
|
|
|
|
|
{
|
|
|
|
|
var controller = NewController(Mock.Of<IWorkOrderAdvancedSearchService>());
|
|
|
|
|
|
|
|
|
|
var result = await controller.GetBoard(
|
|
|
|
|
new DateOnly(2026, 6, 22),
|
|
|
|
|
new DateOnly(2026, 6, 15));
|
|
|
|
|
|
|
|
|
|
var badRequest = result.Should().BeOfType<BadRequestObjectResult>().Subject;
|
|
|
|
|
badRequest.Value.Should().BeOfType<string>().Which.Should().Contain("weekEnd");
|
|
|
|
|
}
|
2026-07-10 10:56:18 -03:00
|
|
|
}
|