77 lines
3.1 KiB
C#
77 lines
3.1 KiB
C#
using Furniture.DAL.Adapters;
|
|
using Furniture.DAL.Contracts;
|
|
using Furniture.DAL.DependencyInjection;
|
|
using Furniture.DAL.Health;
|
|
using Furniture.DAL.Repositories;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace Furniture.DAL.UnitTests;
|
|
|
|
public class RuntimeWiringTests
|
|
{
|
|
[Fact]
|
|
public async Task AddFurnitureDalRuntime_WhenResolved_WiresRepositoriesAndProviders()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddFurnitureDalRuntime();
|
|
|
|
using var provider = services.BuildServiceProvider();
|
|
var furnitureRepository = provider.GetRequiredService<IFurnitureRepository>();
|
|
var catalogRepository = provider.GetRequiredService<ICatalogRepository>();
|
|
var envelope = new FurnitureDalContractEnvelope("1.0.0", "corr-123");
|
|
|
|
var availability = await furnitureRepository.ReadAvailabilityAsync(
|
|
new FurnitureAvailabilityLookupRequest(envelope, "FUR-001"));
|
|
var product = await catalogRepository.ReadProductAsync(
|
|
new CatalogProductLookupRequest(envelope, "PRD-001"));
|
|
|
|
Assert.NotNull(availability);
|
|
Assert.Equal("FUR-001", availability.FurnitureId);
|
|
Assert.Equal(8, availability.QuantityAvailable);
|
|
|
|
Assert.NotNull(product);
|
|
Assert.Equal("PRD-001", product.ProductId);
|
|
Assert.Equal("Contoso Lounge Chair", product.DisplayName);
|
|
}
|
|
|
|
[Fact]
|
|
public void AddFurnitureDalRuntime_WhenResolved_WiresGrpcAndCatalogAdapters()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddFurnitureDalRuntime();
|
|
|
|
using var provider = services.BuildServiceProvider();
|
|
var grpcAdapter = provider.GetRequiredService<IFurnitureDalGrpcContractAdapter>();
|
|
var projectionAdapter = provider.GetRequiredService<ICatalogProjectionContractAdapter>();
|
|
|
|
var availabilityRequest = grpcAdapter.FromGrpcAvailabilityRequest(
|
|
new Furniture.DAL.Grpc.FurnitureAvailabilityDalGrpcContract("FUR-002"));
|
|
var catalogRequest = projectionAdapter.ToDalRequest(
|
|
new BuildingBlock.Catalog.Contracts.Products.ProductContract(
|
|
new BuildingBlock.Catalog.Contracts.Conventions.CatalogContractEnvelope("1.0.0", "corr-456"),
|
|
"PRD-002",
|
|
"Fabrikam Office Desk"));
|
|
|
|
Assert.Equal("FUR-002", availabilityRequest.FurnitureId);
|
|
Assert.NotEmpty(availabilityRequest.Envelope.CorrelationId);
|
|
Assert.Equal("PRD-002", catalogRequest.ProductId);
|
|
Assert.Equal("corr-456", catalogRequest.Envelope.CorrelationId);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task AddFurnitureDalRuntime_WhenResolved_WiresDependencyHealthCheck()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddFurnitureDalRuntime();
|
|
|
|
using var provider = services.BuildServiceProvider();
|
|
var healthCheck = provider.GetRequiredService<IDalDependencyHealthCheck>();
|
|
|
|
var status = await healthCheck.CheckAsync();
|
|
|
|
Assert.True(status.IsHealthy);
|
|
Assert.Contains("IFurnitureDataProvider", status.DependencyNames);
|
|
Assert.Contains("ICatalogRepository", status.DependencyNames);
|
|
}
|
|
}
|