mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 11:53:12 +00:00
74 lines
2 KiB
C#
74 lines
2 KiB
C#
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();
|
|
}
|
|
}
|