public void Composer_WhenProvidedNullDesignationDelegate_ThrowsArgumentException() { var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); Assert.Throws <ArgumentNullException>( () => ModuleComposer <NoFunctions, object, object> .Compose(mockModuleLoader.Object, null)); }
public void Composer_WhenProvidedNullModuleLoader_ThrowsArgumentException() { var mockDesignation = new Action <IModuleDesignator <NoFunctions, object> >(designator => { }); Assert.Throws <ArgumentNullException>( () => ModuleComposer <NoFunctions, object, object> .Compose(null, mockDesignation)); }
public void Composer_WhenTFunctionIsNotEnum_ThrowsInvalidCastException() { var mockDesignation = new Action <IModuleDesignator <object, object> >(designator => { }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); Assert.Throws <InvalidCastException>( () => ModuleComposer <object, object, object> .Compose(mockModuleLoader.Object, mockDesignation)); }
public void ModuleComposer_GivenAutofacModuleLoader_ShouldProvideAContainerWhichCanResolveDependencies() { var container = ModuleComposer <Functions, Module, IContainer> .Compose(new AutofacModuleLoader(), designator => { designator.Use <TestModule>(Functions.Function); }); var dependency = container.Resolve <IDependency>(); Assert.IsInstanceOf <Dependency>(dependency); }
public void Composer_WhenDesignationDelegateDoesNotDefineAModuleForAllFunctions_ThrowsInvalidOperationException() { var mockDesignation = new Action <IModuleDesignator <SomeFunctions, object> >(designator => { designator.Use <object>(SomeFunctions.Function1); //designator.Use<object>(SomeFunctions.Function2); //COMMENTED ON PURPOSE }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); Assert.Throws <InvalidOperationException>( () => ModuleComposer <SomeFunctions, object, object> .Compose(mockModuleLoader.Object, mockDesignation)); }
public void Composer_WhenProvidedDesignationDelegate_ExecutesDelegate() { bool wasCalled = false; var mockDesignation = new Action <IModuleDesignator <NoFunctions, object> >(designator => { wasCalled = true; }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); ModuleComposer <NoFunctions, object, object> .Compose(mockModuleLoader.Object, mockDesignation); Assert.IsTrue(wasCalled); }
public void Composer_WhenAllFunctionsDefinedUsingGenericMethod_EachModuleIsUnique() { var mockDesignation = new Action <IModuleDesignator <SomeFunctions, object> >(designator => { designator.Use <object>(SomeFunctions.Function1); designator.Use <object>(SomeFunctions.Function2); }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); ModuleComposer <SomeFunctions, object, object> .Compose(mockModuleLoader.Object, mockDesignation); mockModuleLoader.Verify(loader => loader.LoadModules(It.Is(Distinct()))); }
public void Composer_WhenAllFunctionalModulesProvided_ProvidesAllModulesToModuleLoader() { var module1 = new object(); var module2 = new object(); var mockDesignation = new Action <IModuleDesignator <SomeFunctions, object> >(designator => { designator.Use(module1, SomeFunctions.Function1); designator.Use(module2, SomeFunctions.Function2); }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); ModuleComposer <SomeFunctions, object, object> .Compose(mockModuleLoader.Object, mockDesignation); mockModuleLoader.Verify( LoadModulesRecievedEnumerableWith(module1, module2)); }
public void Composer_WhenAllFunctionsDefined_ReturnsContainerCreatedByModuleLoader() { var module1 = new object(); var module2 = new object(); var mockContainer = new object(); var mockDesignation = new Action <IModuleDesignator <SomeFunctions, object> >(designator => { designator.Use(module1, SomeFunctions.Function1); designator.Use(module2, SomeFunctions.Function2); }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); mockModuleLoader.Setup(loader => loader.LoadModules(It.IsAny <IEnumerable <object> >())) .Returns(mockContainer); var container = ModuleComposer <SomeFunctions, object, object> .Compose(mockModuleLoader.Object, mockDesignation); Assert.AreSame(mockContainer, container); }
public void Composer_WhenFunctionDefinedByMultipleModules_ProvidesLastDefinedModulesForEachFunctionToModuleLoader() { var module1 = new object(); var module2 = new object(); var module3 = new object(); var module4 = new object(); var mockDesignation = new Action <IModuleDesignator <SomeFunctions, object> >(designator => { designator.Use(module1, SomeFunctions.Function1); designator.Use(module2, SomeFunctions.Function2); designator.Use(module3, SomeFunctions.Function1); designator.Use(module4, SomeFunctions.Function2); }); var mockModuleLoader = new Mock <IModuleLoader <object, object> >(); ModuleComposer <SomeFunctions, object, object> .Compose(mockModuleLoader.Object, mockDesignation); mockModuleLoader.Verify( LoadModulesRecievedEnumerableWith(module3, module4)); }