furniture-service/tests/Furniture.Service.Application.UnitTests/RuntimeWiringTests.cs
2026-03-09 11:57:46 -06:00

69 lines
2.5 KiB
C#

using Furniture.Service.Application.Adapters;
using Furniture.Service.Application.DependencyInjection;
using Furniture.Service.Application.Grpc;
using Furniture.Service.Application.UseCases;
using Furniture.Service.Contracts.UseCases;
using Microsoft.Extensions.DependencyInjection;
namespace Furniture.Service.Application.UnitTests;
public class RuntimeWiringTests
{
[Fact]
public async Task AddFurnitureServiceRuntime_WhenInvoked_ResolvesUseCase()
{
var services = new ServiceCollection();
services.AddFurnitureServiceRuntime();
using var provider = services.BuildServiceProvider();
var useCase = provider.GetRequiredService<IGetFurnitureAvailabilityUseCase>();
var response = await useCase.HandleAsync(new GetFurnitureAvailabilityRequest("FUR-001", "corr-123"));
Assert.Equal("FUR-001", response.FurnitureId);
Assert.Equal("Contoso Lounge Chair", response.DisplayName);
Assert.Equal(8, response.QuantityAvailable);
}
[Fact]
public async Task AddFurnitureServiceRuntime_WhenUsingDemoFurnitureAlias_ResolvesMappedAvailability()
{
var services = new ServiceCollection();
services.AddFurnitureServiceRuntime();
using var provider = services.BuildServiceProvider();
var useCase = provider.GetRequiredService<IGetFurnitureAvailabilityUseCase>();
var response = await useCase.HandleAsync(new GetFurnitureAvailabilityRequest("FURN-001", "corr-123"));
Assert.Equal("FURN-001", response.FurnitureId);
Assert.Equal("Contoso Lounge Chair", response.DisplayName);
Assert.Equal(8, response.QuantityAvailable);
}
[Fact]
public void FurnitureAvailabilityGrpcContractAdapter_WhenMapped_PreservesValues()
{
var adapter = new FurnitureAvailabilityGrpcContractAdapter();
var request = new GetFurnitureAvailabilityRequest("FUR-002", "corr-456");
var grpcContract = adapter.ToGrpc(request);
var roundtrip = adapter.FromGrpc(grpcContract);
Assert.Equal("FUR-002", roundtrip.FurnitureId);
Assert.Equal("corr-456", roundtrip.CorrelationId);
}
[Fact]
public void FurnitureAvailabilityGrpcContractAdapter_WhenCorrelationMissing_GeneratesCorrelation()
{
var adapter = new FurnitureAvailabilityGrpcContractAdapter();
var grpcContract = new GetFurnitureAvailabilityGrpcContract("FUR-003", string.Empty);
var mapped = adapter.FromGrpc(grpcContract);
Assert.Equal("FUR-003", mapped.FurnitureId);
Assert.NotEmpty(mapped.CorrelationId);
}
}