furniture-bff/tests/Furniture.Bff.Application.UnitTests/GetFurnitureAvailabilityHandlerTests.cs
2026-02-22 04:18:32 -06:00

48 lines
1.8 KiB
C#

using Furniture.Bff.Application.Adapters;
using Furniture.Bff.Application.Handlers;
using Furniture.Bff.Contracts.Api;
using Furniture.Service.Contracts.UseCases;
namespace Furniture.Bff.Application.UnitTests;
public class GetFurnitureAvailabilityHandlerTests
{
[Fact]
public async Task HandleAsync_WhenCalled_DelegatesToServiceClient()
{
var handler = new GetFurnitureAvailabilityHandler(
new FakeFurnitureServiceClient(),
new FakeFurnitureAvailabilityEdgeContractAdapter());
var response = await handler.HandleAsync(new GetFurnitureAvailabilityApiRequest("FUR-001", "corr-123"));
Assert.Equal("FUR-001", response.FurnitureId);
Assert.Equal("Chair", response.DisplayName);
Assert.Equal(3, response.QuantityAvailable);
}
private sealed class FakeFurnitureServiceClient : IFurnitureServiceClient
{
public Task<GetFurnitureAvailabilityResponse> GetAvailabilityAsync(GetFurnitureAvailabilityRequest request)
{
return Task.FromResult(new GetFurnitureAvailabilityResponse(request.FurnitureId, "Chair", 3));
}
}
private sealed class FakeFurnitureAvailabilityEdgeContractAdapter : IFurnitureAvailabilityEdgeContractAdapter
{
public GetFurnitureAvailabilityRequest ToServiceRequest(GetFurnitureAvailabilityApiRequest request)
{
return new GetFurnitureAvailabilityRequest(request.FurnitureId, request.CorrelationId);
}
public GetFurnitureAvailabilityApiResponse ToApiResponse(GetFurnitureAvailabilityResponse response)
{
return new GetFurnitureAvailabilityApiResponse(
response.FurnitureId,
response.DisplayName,
response.QuantityAvailable);
}
}
}