61 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|