furniture-domain/tests/Furniture.Domain.UnitTests/FurnitureAvailabilityDecisionServiceTests.cs
2026-02-24 05:26:54 -06:00

55 lines
1.9 KiB
C#

using BuildingBlock.Catalog.Contracts.Conventions;
using BuildingBlock.Catalog.Contracts.Responses;
using BuildingBlock.Inventory.Contracts.Conventions;
using BuildingBlock.Inventory.Contracts.Responses;
using Furniture.Domain.Contracts;
using Furniture.Domain.Decisions;
namespace Furniture.Domain.UnitTests;
public class FurnitureAvailabilityDecisionServiceTests
{
[Fact]
public void BuildCatalogRequest_WhenCalled_UsesFurnitureIdAsProductId()
{
var service = new FurnitureAvailabilityDecisionService();
var request = service.BuildCatalogRequest(new FurnitureAvailabilityDecisionRequest("FUR-001", "corr-001"));
Assert.Equal("FUR-001", request.ProductId);
Assert.Equal("corr-001", request.Envelope.CorrelationId);
}
[Fact]
public void BuildInventoryRequest_WhenCorrelationMissing_GeneratesCorrelation()
{
var service = new FurnitureAvailabilityDecisionService();
var request = service.BuildInventoryRequest(new FurnitureAvailabilityDecisionRequest("FUR-001", string.Empty));
Assert.Equal("FUR-001", request.ItemCode);
Assert.NotEmpty(request.Envelope.CorrelationId);
}
[Fact]
public void ComposeResponse_WhenCalled_UsesCatalogAndInventoryValues()
{
var service = new FurnitureAvailabilityDecisionService();
var request = new FurnitureAvailabilityDecisionRequest("FUR-001", "corr-001");
var catalog = new ProductContractResponse(
new CatalogContractEnvelope("1.0.0", "corr-001"),
"FUR-001",
"Chair");
var inventory = new InventoryItemLookupResponse(
new InventoryContractEnvelope("1.0.0", "corr-001"),
"FUR-001",
12);
var response = service.ComposeResponse(request, catalog, inventory);
Assert.Equal("FUR-001", response.FurnitureId);
Assert.Equal("Chair", response.DisplayName);
Assert.Equal(12, response.QuantityAvailable);
}
}