98 lines
3.4 KiB
C#
98 lines
3.4 KiB
C#
using Operations.Service.Application.Ports;
|
|
using Operations.Service.Application.UseCases;
|
|
using Operations.Service.Contracts.Requests;
|
|
|
|
namespace Operations.Service.Application.UnitTests;
|
|
|
|
public class OperationsWorkflowUseCasesTests
|
|
{
|
|
private readonly DefaultOperationsWorkflowPort workflowPort = new();
|
|
|
|
[Fact]
|
|
public async Task GetWaiterAssignmentsUseCase_ReturnsAssignmentsAndActivity()
|
|
{
|
|
var useCase = new GetWaiterAssignmentsUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(new GetWaiterAssignmentsRequest("demo-context"), CancellationToken.None);
|
|
|
|
Assert.Equal("demo-context", response.ContextId);
|
|
Assert.NotEmpty(response.Assignments);
|
|
Assert.NotEmpty(response.RecentActivity);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task SubmitRestaurantOrderUseCase_WhenRequestValid_AcceptsOrder()
|
|
{
|
|
var useCase = new SubmitRestaurantOrderUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(
|
|
new SubmitRestaurantOrderRequest("demo-context", "ORD-101", "T-12", 3),
|
|
CancellationToken.None);
|
|
|
|
Assert.True(response.Accepted);
|
|
Assert.Equal("queued", response.Status);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetCustomerOrderStatusUseCase_ReturnsOrders()
|
|
{
|
|
var useCase = new GetCustomerOrderStatusUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(new GetCustomerOrderStatusRequest("demo-context"), CancellationToken.None);
|
|
|
|
Assert.Equal("demo-context", response.ContextId);
|
|
Assert.NotEmpty(response.Orders);
|
|
Assert.NotEmpty(response.RecentEvents);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetPosTransactionSummaryUseCase_ReturnsPaymentActivity()
|
|
{
|
|
var useCase = new GetPosTransactionSummaryUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(new GetPosTransactionSummaryRequest("demo-context"), CancellationToken.None);
|
|
|
|
Assert.Equal("USD", response.Currency);
|
|
Assert.NotEmpty(response.RecentPayments);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task CapturePosPaymentUseCase_WhenAmountPositive_ReturnsCapturedStatus()
|
|
{
|
|
var useCase = new CapturePosPaymentUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(
|
|
new CapturePosPaymentRequest("demo-context", "POS-9001", 25.50m, "USD", "card"),
|
|
CancellationToken.None);
|
|
|
|
Assert.True(response.Succeeded);
|
|
Assert.Equal("captured", response.Status);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetRestaurantAdminConfigUseCase_ReturnsFlagsWindowsAndChanges()
|
|
{
|
|
var useCase = new GetRestaurantAdminConfigUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(new GetRestaurantAdminConfigRequest("demo-context"), CancellationToken.None);
|
|
|
|
Assert.Equal("demo-context", response.ContextId);
|
|
Assert.NotEmpty(response.FeatureFlags);
|
|
Assert.NotEmpty(response.ServiceWindows);
|
|
Assert.NotEmpty(response.RecentChanges);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task SetServiceWindowUseCase_WhenRequestValid_ReturnsAppliedResponse()
|
|
{
|
|
var useCase = new SetServiceWindowUseCase(workflowPort);
|
|
|
|
var response = await useCase.HandleAsync(
|
|
new SetServiceWindowRequest("demo-context", 1, "08:00:00", "22:00:00", "admin-operator"),
|
|
CancellationToken.None);
|
|
|
|
Assert.True(response.Applied);
|
|
Assert.Equal(1, response.ServiceWindow.DayOfWeek);
|
|
}
|
|
}
|