public void ShouldResolveModuleAndInitializeSingleModule() { IServiceLocator containerFacade = new MockContainerAdapter(); var service = new ModuleInitializer(containerFacade, new MockLogger()); FirstTestModule.wasInitializedOnce = false; var info = CreateModuleInfo(typeof(FirstTestModule)); service.Initialize(info); Assert.IsTrue(FirstTestModule.wasInitializedOnce); }
public void ShouldLogModuleInitializeErrorsAndContinueLoading() { IServiceLocator containerFacade = new MockContainerAdapter(); var logger = new MockLogger(); var service = new CustomModuleInitializerService(containerFacade, logger); var invalidModule = CreateModuleInfo(typeof(InvalidModule)); Assert.IsFalse(service.HandleModuleInitializerrorCalled); service.Initialize(invalidModule); Assert.IsTrue(service.HandleModuleInitializerrorCalled); }
public void ShouldResolveModuleAndInitializeSingleModule() { IContainerFacade containerFacade = new MockContainerAdapter(); var service = new ModuleLoader(containerFacade, new MockLogger()); FirstTestModule.wasInitializedOnce = false; var info = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule"); service.Initialize(new[] { info }); Assert.IsTrue(FirstTestModule.wasInitializedOnce); }
public void InexistentAssemblyFileThrows() { IContainerFacade containerFacade = new MockContainerAdapter(); var service = new TestableModuleInitializerService(containerFacade, new MockLogger()); var moduleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location + "NotValid.dll", typeof(FirstTestModule).FullName, "InexistantModule"); bool exceptionThrown = false; try { service.Initialize(new[] { moduleInfo }); } catch (Exception ex) { Assert.AreEqual(typeof(ModuleLoadException), ex.GetType()); StringAssert.Contains(ex.Message, "NotValid.dll"); StringAssert.Contains(ex.Message, "not found"); exceptionThrown = true; } Assert.IsTrue(exceptionThrown, "No exception thrown."); }
public void DuplicateModuleNameThrows() { IContainerFacade containerFacade = new MockContainerAdapter(); var service = new TestableModuleInitializerService(containerFacade, new MockLogger()); var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "SameName"); var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.Location, typeof(SecondTestModule).FullName, "SameName"); bool exceptionThrown = false; try { service.Initialize(new[] { firstModuleInfo, secondModuleInfo }); } catch (Exception ex) { Assert.AreEqual(typeof(ModuleLoadException), ex.GetType()); StringAssert.Contains(ex.Message, "SameName"); StringAssert.Contains(ex.Message, "duplicate"); exceptionThrown = true; } Assert.IsTrue(exceptionThrown, "No exception thrown."); }
public void ShouldNotLoadAssemblyThatHasAlreadyBeenLoaded() { IContainerFacade containerFacade = new MockContainerAdapter(); var service = new TestableModuleInitializerService(containerFacade, new MockLogger()); var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule"); var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.Location, typeof(SecondTestModule).FullName, "SecondTestModule"); Assert.AreEqual(0, service.LoadedAssemblies.Count); service.Initialize(new[] { firstModuleInfo, secondModuleInfo }); Assert.AreEqual(1, service.LoadedAssemblies.Count); }
public void ShouldNotInitializeIfAlreadyLoaded() { ModuleLoadTracker.ModuleLoadStack.Clear(); IContainerFacade containerFacade = new MockContainerAdapter(); var service = new ModuleLoader(containerFacade, new MockLogger()); FirstTestModule.wasInitializedOnce = false; SecondTestModule.wasInitializedOnce = false; var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule"); service.Initialize(new[] { firstModuleInfo }); Assert.AreEqual(1, ModuleLoadTracker.ModuleLoadStack.Count, "ModuleLoadStack should only contain 1 module"); service.Initialize(new[] { firstModuleInfo }); Assert.AreEqual(1, ModuleLoadTracker.ModuleLoadStack.Count, "ModuleLoadStack should not have module that has already been loaded"); }
public void ShouldLogModuleInitializationError() { IContainerFacade containerFacade = new MockContainerAdapter(); var logger = new MockLogger(); var service = new ModuleLoader(containerFacade, logger); ExceptionThrowingModule.wasInitializedOnce = false; var exceptionModule = new ModuleInfo(typeof(ExceptionThrowingModule).Assembly.Location, typeof(ExceptionThrowingModule).FullName, "ExceptionThrowingModule"); try { service.Initialize(new[] { exceptionModule }); } catch (ModuleLoadException) { } Assert.IsNotNull(logger.LastMessage); StringAssert.Contains(logger.LastMessage, "ExceptionThrowingModule"); }
public void ShouldLogModuleInitializeErrorsAndContinueLoading() { IContainerFacade containerFacade = new MockContainerAdapter(); var logger = new MockLogger(); var service = new CustomModuleInitializerService(containerFacade, logger); var invalidModule = new ModuleInfo(typeof(InvalidModule).Assembly.Location, typeof(InvalidModule).FullName, "InvalidModule"); Assert.IsFalse(service.HandleModuleLoadErrorCalled); service.Initialize(new[] { invalidModule }); Assert.IsTrue(service.HandleModuleLoadErrorCalled); }
public void ShouldInitializeModulesInOrder() { IContainerFacade containerFacade = new MockContainerAdapter(); var service = new ModuleLoader(containerFacade, new MockLogger()); ModuleLoadTracker.ModuleLoadStack.Clear(); var dependencyModule = new ModuleInfo(typeof(DependencyModule).Assembly.Location, typeof(DependencyModule).FullName, "DependencyModule"); var dependantModule = new ModuleInfo(typeof(DependantModule).Assembly.Location, typeof(DependantModule).FullName, "DependantModule", new[] { "DependencyModule" }); service.Initialize(new[] { dependantModule, dependencyModule }); Assert.AreEqual(typeof(DependantModule), ModuleLoadTracker.ModuleLoadStack.Pop()); Assert.AreEqual(typeof(DependencyModule), ModuleLoadTracker.ModuleLoadStack.Pop()); }
public void ShouldLogModuleInitializationError() { IServiceLocator containerFacade = new MockContainerAdapter(); var logger = new MockLogger(); var service = new ModuleInitializer(containerFacade, logger); ExceptionThrowingModule.wasInitializedOnce = false; var exceptionModule = CreateModuleInfo(typeof(ExceptionThrowingModule)); try { service.Initialize(exceptionModule); } catch (ModuleInitializeException) { } Assert.IsNotNull(logger.LastMessage); StringAssert.Contains(logger.LastMessage, "ExceptionThrowingModule"); }
public void ShouldResolveAndInitializeMultipleModules() { IContainerFacade containerFacade = new MockContainerAdapter(); var service = new ModuleLoader(containerFacade, new MockLogger()); FirstTestModule.wasInitializedOnce = false; SecondTestModule.wasInitializedOnce = false; var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.FullName, typeof(FirstTestModule).FullName, "FirstTestModule"); var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.FullName, typeof(SecondTestModule).FullName, "SecondTestModule"); //var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule"); //var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.Location, typeof(SecondTestModule).FullName, "SecondTestModule"); service.Initialize(new[] { firstModuleInfo, secondModuleInfo }); Assert.IsTrue(FirstTestModule.wasInitializedOnce); Assert.IsTrue(SecondTestModule.wasInitializedOnce); }