69 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|