63 lines
2.3 KiB
C#
63 lines
2.3 KiB
C#
using Furniture.Bff.Application.Adapters;
|
|
using Furniture.Bff.Application.DependencyInjection;
|
|
using Furniture.Bff.Application.Grpc;
|
|
using Furniture.Bff.Application.Handlers;
|
|
using Furniture.Bff.Contracts.Api;
|
|
using Furniture.Service.Contracts.UseCases;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Furniture.Bff.Application.UnitTests;
|
|
|
|
public class RuntimeWiringTests
|
|
{
|
|
[Fact]
|
|
public async Task AddFurnitureBffApplicationRuntime_WhenResolved_WiresHandler()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddFurnitureBffApplicationRuntime();
|
|
services.AddSingleton<IFurnitureServiceClient, FakeFurnitureServiceClient>();
|
|
|
|
using var provider = services.BuildServiceProvider();
|
|
var handler = provider.GetRequiredService<IGetFurnitureAvailabilityHandler>();
|
|
|
|
var response = await handler.HandleAsync(new GetFurnitureAvailabilityApiRequest("FUR-001", "corr-123"));
|
|
|
|
Assert.Equal("FUR-001", response.FurnitureId);
|
|
Assert.Equal("Chair", response.DisplayName);
|
|
Assert.Equal(7, response.QuantityAvailable);
|
|
}
|
|
|
|
[Fact]
|
|
public void FurnitureAvailabilityEdgeGrpcContractAdapter_WhenMapped_PreservesValues()
|
|
{
|
|
var adapter = new FurnitureAvailabilityEdgeGrpcContractAdapter();
|
|
var request = new GetFurnitureAvailabilityApiRequest("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 FurnitureAvailabilityEdgeGrpcContractAdapter_WhenCorrelationMissing_GeneratesCorrelation()
|
|
{
|
|
var adapter = new FurnitureAvailabilityEdgeGrpcContractAdapter();
|
|
var grpcContract = new GetFurnitureAvailabilityEdgeGrpcContract("FUR-003", string.Empty);
|
|
|
|
var mapped = adapter.FromGrpc(grpcContract);
|
|
|
|
Assert.Equal("FUR-003", mapped.FurnitureId);
|
|
Assert.NotEmpty(mapped.CorrelationId);
|
|
}
|
|
|
|
private sealed class FakeFurnitureServiceClient : IFurnitureServiceClient
|
|
{
|
|
public Task<GetFurnitureAvailabilityResponse> GetAvailabilityAsync(GetFurnitureAvailabilityRequest request)
|
|
{
|
|
return Task.FromResult(new GetFurnitureAvailabilityResponse(request.FurnitureId, "Chair", 7));
|
|
}
|
|
}
|
|
}
|