shoc-backend/SeaHaven.Services.Tests/WorkOrderMappingTests.cs

75 lines
2 KiB
C#
Raw Normal View History

using Data.SeaHavenIndustries;
using Data.SeaHavenIndustries.Enums;
using FluentAssertions;
using SeaHaven.Services.DTOs;
using Xunit;
namespace SeaHaven.Services.Tests;
public class WorkOrderMappingTests
{
[Fact]
public void MapToModel_WithValidEnumStrings_ParsesStatusAndPriority()
{
var entity = new WorkOrder
{
Id = 7,
WorkerOrderTitle = "Fix pump",
Status = "InProgress",
Priority = "High"
};
var dto = WorkOrderDTO.MapToModel(entity);
dto.Id.Should().Be(7);
dto.WorkerOrderTitle.Should().Be("Fix pump");
dto.Status.Should().Be(WorkOrderStatus.InProgress);
dto.Priority.Should().Be(WorkOrderPriority.High);
}
[Fact]
public void MapToModel_WithUnparseableEnumStrings_FallsBackToDefaults()
{
var entity = new WorkOrder
{
WorkerOrderTitle = "Garbage",
Status = "not-a-status",
Priority = "not-a-priority"
};
var dto = WorkOrderDTO.MapToModel(entity);
dto.Status.Should().Be(WorkOrderStatus.Open);
dto.Priority.Should().Be(WorkOrderPriority.Medium);
}
[Fact]
public void MapToEntity_SerializesEnumsToStrings()
{
var dto = new WorkOrderDTO
{
Id = 3,
WorkerOrderTitle = "Inspect",
Status = WorkOrderStatus.Completed,
Priority = WorkOrderPriority.Critical
};
var entity = WorkOrderDTO.MapToEntity(dto);
entity.Status.Should().Be("Completed");
entity.Priority.Should().Be("Critical");
}
[Fact]
public void CreateMapToEntity_WhenStatusAndPriorityNull_AppliesDefaults()
{
var dto = new CreateWorkOrderDTO { WorkerOrderTitle = "New" };
var entity = CreateWorkOrderDTO.MapToEntity(dto);
entity.Status.Should().Be("Open");
entity.Priority.Should().Be("Medium");
entity.CreatedDate.Should().NotBeNull();
}
}