48 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|