using JdeScoping.Core.Models.WorkOrders; using JdeScoping.DataSync.Configuration.MergeConfigurations; using JdeScoping.DataSync.Contracts; using JdeScoping.DataSync.Services; using Microsoft.Extensions.DependencyInjection; using Shouldly; namespace JdeScoping.DataSync.Tests.Services; public class MergeConfigurationRegistryTests { [Fact] public void GetConfiguration_RegisteredType_ReturnsConfiguration() { // Arrange var services = new ServiceCollection(); services.AddSingleton, WorkOrderMergeConfiguration>(); var provider = services.BuildServiceProvider(); var registry = new MergeConfigurationRegistry(provider); // Act var config = registry.GetConfiguration(); // Assert config.ShouldNotBeNull(); config.TableName.ShouldBe("WorkOrder"); } [Fact] public void GetConfiguration_UnregisteredType_ThrowsInvalidOperationException() { // Arrange var services = new ServiceCollection(); var provider = services.BuildServiceProvider(); var registry = new MergeConfigurationRegistry(provider); // Act & Assert var ex = Should.Throw(() => registry.GetConfiguration()); ex.Message.ShouldContain("UnregisteredEntity"); } [Fact] public void HasConfiguration_RegisteredType_ReturnsTrue() { // Arrange var services = new ServiceCollection(); services.AddSingleton, WorkOrderMergeConfiguration>(); var provider = services.BuildServiceProvider(); var registry = new MergeConfigurationRegistry(provider); // Act var result = registry.HasConfiguration(); // Assert result.ShouldBeTrue(); } [Fact] public void HasConfiguration_UnregisteredType_ReturnsFalse() { // Arrange var services = new ServiceCollection(); var provider = services.BuildServiceProvider(); var registry = new MergeConfigurationRegistry(provider); // Act var result = registry.HasConfiguration(); // Assert result.ShouldBeFalse(); } private class UnregisteredEntity { } }