using Autofac; using eSuite.Core.Clock; using Moq; using NUnit.Framework; namespace e_suite.DependencyInjection.UnitTests; [TestFixture] public class ESuiteModuleUnitTests { [Test] public void Load_CallsModuleDiscovery() { // Arrange var mockDiscovery = new Mock(); var module = new ESuiteModule(mockDiscovery.Object); ContainerBuilder? capturedBuilder = null; mockDiscovery .Setup(d => d.RegisterAllModuleIocRegistrations(It.IsAny())) .Callback(b => capturedBuilder = b); var builder = new ContainerBuilder(); builder.RegisterModule(module); // Act builder.Build(); // Assert mockDiscovery.Verify( d => d.RegisterAllModuleIocRegistrations(It.IsAny()), Times.Once); Assert.That(capturedBuilder, Is.Not.Null); } [Test] public void Load_RegistersUtcClockAsIClock() { // Arrange var mockDiscovery = new Mock(); // Don’t let discovery do anything in this test mockDiscovery .Setup(d => d.RegisterAllModuleIocRegistrations(It.IsAny())); var module = new ESuiteModule(mockDiscovery.Object); var builder = new ContainerBuilder(); builder.RegisterModule(module); // Act var container = builder.Build(); var clock = container.Resolve(); // Assert Assert.That(clock, Is.InstanceOf()); } }