using Furniture.Service.Application.Ports; using Furniture.Service.Application.UseCases; using Furniture.Service.Contracts.UseCases; namespace Furniture.Service.Application.UnitTests; public class GetFurnitureAvailabilityUseCaseTests { [Fact] public async Task HandleAsync_WhenCalled_DelegatesToReadPort() { var port = new FakeFurnitureAvailabilityReadPort(); var useCase = new GetFurnitureAvailabilityUseCase(port); var response = await useCase.HandleAsync(new GetFurnitureAvailabilityRequest("FUR-001")); Assert.Equal("FUR-001", response.FurnitureId); Assert.Equal(10, response.QuantityAvailable); } private sealed class FakeFurnitureAvailabilityReadPort : IFurnitureAvailabilityReadPort { public Task GetAvailabilityAsync(string furnitureId) { return Task.FromResult(new GetFurnitureAvailabilityResponse(furnitureId, 10)); } } }