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(); } }