public void Pilet_Services_Should_Resolve_Global_Dependencies() { // global registrations var globalServices = new ServiceCollection(); globalServices.AddSingleton <GlobalDependency>(); var piralServiceProvider = new PiralServiceProvider(globalServices); var globalDependency = piralServiceProvider.GetRequiredService <GlobalDependency>(); // moduleA registrations var moduleAServices = new ServiceCollection(); moduleAServices.AddTransient <ModuleADependency>(); var moduleAServiceProvider = piralServiceProvider.CreatePiletServiceProvider(moduleAServices); var moduleADependency = moduleAServiceProvider.GetRequiredService <ModuleADependency>(); globalDependency.Should().Be(moduleADependency.Dependency); // moduleB registrations var moduleBServices = new ServiceCollection(); moduleBServices.AddTransient <ModuleBDependency>(); var moduleBServiceProvider = piralServiceProvider.CreatePiletServiceProvider(moduleBServices); var moduleBDependency = moduleBServiceProvider.GetRequiredService <ModuleBDependency>(); globalDependency.Should().Be(moduleBDependency.Dependency); }
public void PiletA_Should_Resolve_Global_Dependency_Registerd_By_PiletB() { // Arrange var services = new ServiceCollection(); services.AddLogging(); services.AddSingleton <IModuleContainerService, ModuleContainerService>(); var sp = new PiralServiceProvider(services); var moduleConatinerService = sp.GetRequiredService <IModuleContainerService>(); // Act var spA = moduleConatinerService.Configure(typeof(PiletA.Module).Assembly); var spB = moduleConatinerService.Configure(typeof(PiletB.Module).Assembly); // Assert var dependencyA = spA.GetRequiredService <PiletA.DependencyA>(); var dependencyB = spB.GetRequiredService <PiletB.DependencyB>(); dependencyB.Should().Be(dependencyA.Dependency); }