kitchen-service/tests/Kitchen.Service.Application.UnitTests/KitchenWorkflowUseCasesTests.cs
2026-03-31 16:18:04 -06:00

61 lines
2.0 KiB
C#

using Kitchen.Service.Application.Ports;
using Kitchen.Service.Application.UseCases;
using Kitchen.Service.Contracts.Requests;
namespace Kitchen.Service.Application.UnitTests;
public class KitchenWorkflowUseCasesTests
{
private readonly DefaultKitchenWorkflowPort workflowPort = new();
[Fact]
public async Task GetKitchenBoardUseCase_ReturnsLanesAndStations()
{
var useCase = new GetKitchenBoardUseCase(workflowPort);
var response = await useCase.HandleAsync(new GetKitchenBoardRequest("demo-context"), CancellationToken.None);
Assert.Equal("demo-context", response.ContextId);
Assert.NotEmpty(response.Lanes);
Assert.NotEmpty(response.AvailableStations);
}
[Fact]
public async Task ClaimKitchenWorkItemUseCase_ReturnsClaimedResponse()
{
var useCase = new ClaimKitchenWorkItemUseCase(workflowPort);
var response = await useCase.HandleAsync(
new ClaimKitchenWorkItemRequest("demo-context", "WK-1001", "chef-maya"),
CancellationToken.None);
Assert.True(response.Claimed);
Assert.Equal("chef-maya", response.ClaimedBy);
}
[Fact]
public async Task UpdateKitchenPriorityUseCase_NormalizesPriority()
{
var useCase = new UpdateKitchenPriorityUseCase(workflowPort);
var response = await useCase.HandleAsync(
new UpdateKitchenPriorityRequest("demo-context", "WK-1001", 0, "expo-noah"),
CancellationToken.None);
Assert.Equal(1, response.Priority);
}
[Fact]
public async Task TransitionKitchenOrderStateUseCase_AllowsConfiguredStates()
{
var useCase = new TransitionKitchenOrderStateUseCase();
var response = await useCase.HandleAsync(
new TransitionKitchenOrderStateRequest("CO-1001", "KT-1001", "Preparing", "chef-maya"),
CancellationToken.None);
Assert.True(response.Applied);
Assert.Equal("Preparing", response.CurrentState);
}
}